Hallo,
Ich habe zwei Idee für ein neues Feature im Objektinspektor:
Direkt rechnen im Objektinspektor:
Folgende Funktion:
Oft hat man das Problem dass ein Feld z.B. xxx Pixel größer sein soll. Wenn man nun im Objektinspektor eingeben könnte:
Und dann die Enter-Taste drückt um die Daten zu übernehmen, dann sollte er das erkennen und 21+5 rechnen und als Ergebnis 26 im Objektinspektor stehen.
Dynamische Zuweisung von Variablen bei Eigenschaften im Objektinspektor:
Dies ist wohl extrem komplex, da diese Berechnung zur Laufzeit erfolgen sollte und nicht nur in der IDE.
Zur Funktion: Man weist in einem Objektinspektor eine Variable zu und wenn sich der Wert ändert so überträgt sich dieser in das Objekt. In diesem Beispiel wird die Width gleich dem Height gesetzt.
Ich denke Vorschlag 1 sollte recht einfach um zu setzen sein.
Vielen Dank
VG Markus
Objektinspektor: Features
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Objektinspektor: Features
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Objektinspektor: Features
Wegen 1)
Ich habe einmal im Lazarus Code etwas gestöbert und habe im Code vom Objektinspektor die Zuweisung gefunden: Wenn ich GetOrdValueAt() weiter verfolge, so kommt man schlussendlich zu dynamisch zugeordneten Methodenaufrufen.
Wo jetzt die eigentliche Wandlung vom Eingabetext in eine Zahl erfolgt habe ich nun nicht mehr gefunden.
Hier ein Demo-Code wie das mit dem +/- funktionieren würde:
Ich habe einmal im Lazarus Code etwas gestöbert und habe im Code vom Objektinspektor die Zuweisung gefunden: Wenn ich GetOrdValueAt() weiter verfolge, so kommt man schlussendlich zu dynamisch zugeordneten Methodenaufrufen.
Code: Alles auswählen
AMethod.Code:=PropInfo^.GetProc
Hier ein Demo-Code wie das mit dem +/- funktionieren würde:
Code: Alles auswählen
Procedure TForm1.Edit1KeyPress(Sender: TObject; Var Key: char);
Var sl: TStringList;
s: String;
i, k: Integer;
Begin
If Key <> #13 Then Exit;
s := Edit1.Text;
sl := TStringList.Create;
sl.add('0');
While s <> '' Do
Begin
If s[1] In ['0'..'9'] Then
sl[sl.Count - 1] := sl[sl.Count - 1] + s[1]
Else If s[1] In ['+', '-'] Then
Begin
sl.Add(s[1]);
sl.Add('0');
End;
Delete(s, 1, 1);
End;
i := 0;
k := 0;
While sl.Count > 0 Do
Begin
If sl[0] = '+' Then
k := 1
Else If sl[0] = '-' Then
k := 2
Else Begin
Case k Of
1: i := i + StrToInt(sl[0]);
2: i := i - StrToInt(sl[0]);
Else i := StrToInt(sl[0]);
End;
End;
sl.Delete(0);
End;
Edit1.Text := IntToStr(i);
FreeAndNil(sl);
end;
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Objektinspektor: Features
Hier ist vor allem das Problem, dass Eigenschaften keine Push-Benachrichtigungen geben, wenn sie sich ändern (in diesem konkreten Fall könnte man das zwar über ein OnSizeChange oder so abfangen, aber der generelle Punkt bleibt). Das heißt es müsste etwas aktiv die Eigenschaft kontinuierlich abfragen oder die Komponente müsste ordentliche Observer Schnittstellen implementiert haben, auf die etwas lauschen kann (auch wenn dann nur bekannt ist, dass sich was geändert hat, aber nicht was).MmVisual hat geschrieben: So 21. Nov 2021, 08:33 Dynamische Zuweisung von Variablen bei Eigenschaften im Objektinspektor:
Dies ist wohl extrem komplex, da diese Berechnung zur Laufzeit erfolgen sollte und nicht nur in der IDE.
Zur Funktion: Man weist in einem Objektinspektor eine Variable zu und wenn sich der Wert ändert so überträgt sich dieser in das Objekt. In diesem Beispiel wird die Width gleich dem Height gesetzt.
In Delphi gibt es aber seit XE2 etwas, das in eine ähnliche Richtung geht: LiveBindings. Ein Beispiel dazu hier (Beschreibung ist zwar für FireMonkey, geht aber auch mit der VCL).
FPC Compiler Entwickler