Verzweigung je nach Sender:TObject

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Verzweigung je nach Sender:TObject

Beitrag von mschnell »

./.
Zuletzt geändert von mschnell am Fr 3. Jun 2016, 10:05, insgesamt 1-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Verzweigung je nach Sender:TObject

Beitrag von mschnell »

Requion hat geschrieben:Case Anweisungen schlucken doch keine strings oder?


Doch !
-Michael

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Verzweigung je nach Sender:TObject

Beitrag von photor »

m.fuchs hat geschrieben:
Requion hat geschrieben:
Case Anweisungen schlucken doch keine strings oder?

CASE mit Strings wird seit FPC 2.6.0 unterstützt.


Ok. DAS ist mir neu. :o Und damit ist das natürlich auch eine (übersichtliche) Option. Ich werde es testen und berichten.

Wieder was gelernt! Schon deshalb ist es ein guter Tag. Danke.

Photor

PS: gerade schnell getestet: TUT!

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Verzweigung je nach Sender:TObject

Beitrag von theo »

photor hat geschrieben:
m.fuchs hat geschrieben:
Requion hat geschrieben:
Case Anweisungen schlucken doch keine strings oder?

CASE mit Strings wird seit FPC 2.6.0 unterstützt.


Ok. DAS ist mir neu. :o Und damit ist das natürlich auch eine (übersichtliche) Option. Ich werde es testen und berichten.

Wieder was gelernt! Schon deshalb ist es ein guter Tag. Danke.

Photor

PS: gerade schnell getestet: TUT!


Das hatte ich dir in der allerersten Antwort schon geschrieben.

Code: Alles auswählen

case TEdit(Sender).Name of


ist genau das.

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Verzweigung je nach Sender:TObject

Beitrag von photor »

Hallo theo,

ich bitte Dich hiermit ausdrücklich um Entschuldigung: ich hab' es einfach übersehen, weil mir das case-Konstrukt nicht eingeleuchtet hat. Du siehst: mein Fehler! Aber ich hab's ja gelernt - denke ich.

Ciao,

Photor

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Verzweigung je nach Sender:TObject

Beitrag von photor »

Hallo Forum,

ich greife das Thema nochmal auf. Ich habe jetzt eine Funktion, die bei einem "OnEditingDone"-Event für diverse TEdit-Objekte aufgerufen wird und nach theo's Vorschlag verzweigt. Für statisch erzeugte TEdit-Objekte klappt das sehr gut - die Funktion ist im Ereignis-Tab des Objektinspektors für die TEdits entsprechend deklariert.

Ich habe aber auch einige TEdit's, die dynamisch erzeugt werden - etwa so:

Code: Alles auswählen

 
  for cnt:=1 to ng do
  begin
    procStatus[cnt] := TEdit.Create(GroupBoxGBRatios);
    procStatus[cnt].Name := 'EditGBRatio' + IntToStr(cnt);
    procStatus[cnt].Height := 30;
    procStatus[cnt].Width := 110;
    procStatus[cnt].Top := 16 + cnt * 33;
    procStatus[cnt].Left := 153;
    procStatus[cnt].Text := FloatToStr(RoadLoadData.RatioGears[cnt]);
    procStatus[cnt].Parent := GroupBoxGBRatios;
 //   procStatus[cnt].OnEditingDone := ;
  end;
 

Diesen würde ich gerne auch die entsprechende Funktion für den OnEditingDone-Event zuordnen. Ich denke, das sollte funktionieren, wie in der (vor-)letzten Zeile im Code angedeutet. Aber wie geht's jetzt weiter? Meine Pascal-Kenntnisse verlassen mich hier leider.

Die Funktion hat folgenden Prototypen:

Code: Alles auswählen

 
procedure TForm1.EditParameterOnEditingDone(Sender : TObject);
 


Danke für die Hilfe,

Photor

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Verzweigung je nach Sender:TObject

Beitrag von Michl »

Im Modus {$mode objfpc}:

Code: Alles auswählen

procStatus[cnt].OnEditingDone := @EditParameterOnEditingDone;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Verzweigung je nach Sender:TObject

Beitrag von theo »

Oder einfach den Eingabecursor hinter

Code: Alles auswählen

procStatus[cnt].OnEditingDone :=

setzen und dann Strg+Umschalt+C drücken.
Damit bekommst du das Methodengerüst auch noch gleich.

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Verzweigung je nach Sender:TObject

Beitrag von photor »

Michl hat geschrieben:Im Modus {$mode objfpc}:

Code: Alles auswählen

procStatus[cnt].OnEditingDone := @EditParameterOnEditingDone;

Oh. Das ist ja einfach! Ich werde weiter probieren. Danke.

theo hat geschrieben:Oder einfach den Eingabecursor hinter

Code: Alles auswählen

procStatus[cnt].OnEditingDone :=

setzen und dann Strg+Umschalt+C drücken.
Damit bekommst du das Methodengerüst auch noch gleich.


Hm. das habe ich gerade probiert und ich bekomme die Auswahl, ob ich eine private, public ... Methode will und dann wird eine neue angelegt. Ich kann aber nicht aus den bestehenden auswählen. Trotzden Dank. Gelegenheit, sich nochmal mit den erweiterten Möglichkeiten der IDE auseinander zu setzen.

Ciao,

Photor

Antworten