auf Tlabel zugreifen, aber wie?

Rund um die LCL und andere Komponenten
Antworten
khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

auf Tlabel zugreifen, aber wie?

Beitrag von khh »

hallo zusammen,
hab doch noch ein Problem mit meinem Label.:-(
Alsoo ich erzeuge zur Laufzeit mehrere :
MyLabel := TMyLabel.create(self);

im Mousedown der Classe TMyLabel reagiere ich mit diversen Aktionen, wie zb.
TCustomControl(self).BeginDrag(true);

im DragDrop der ElternKlasse verschiebe ich das Label dann an einen anderen Platz.
Das funktioniert auch wunderbar, solange ich immer das letzte eingefügte Label verschiebe.
Greife ich auf ein "älteres" Label per Mousedown zu, funktioniert das nicht mehr.

wie komm ich an die zuerst eingefügten Labels wieder ran?

Danke für eure Hilfe

Gruss KH

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Rufst du denn EndDrag auch irgendwo auf ?
Und warum machst du das so umständlich, lese dich doch in die Thematik etwas ein.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Beitrag von khh »

@christian
kannst du mir erklären
was daran umständlich ist ?

Ich erzeuge die Labels im Clickevent des Elternobjekts.

Die Labels beinhalten den Text eines vorher erzeugten Eingabefeldes.
So in der Art wie bei Paint, nur dass der eingefügte Text eben auch später noch verschoben werden kann.

Gruss Kh

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

Beitrag von theo »

Naja, warum nimmst du statt des Mousedown nicht das StartDrag Event des TLabel? (DragMode auf dmAutomatic setzen)

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Beitrag von khh »

@theo & Christian
ich danke euch , ich glaube wirklich ich sollte mich noch etwas "einlesen" ;-)

Gruss KH

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Schau dir einfach mal an wie das bei den Formulardesignern gelöst ist, ich habe keine lust jetzt seitenweise abhandlungen darüber zu schreibenzumal ja auch alles zu finden ist.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

petermännchen
Beiträge: 92
Registriert: So 26. Aug 2007, 20:35
OS, Lazarus, FPC: Win7, Laz 1.2.6, FPC 2.6.4, SVN 33306, ZEOS 7.1.4
CPU-Target: 32Bit
Wohnort: Helmstedt
Kontaktdaten:

Beitrag von petermännchen »

Vielleicht habe ich nur das Thema nicht richtig verstanden...

Ist MyLabel global definiert?
Hat myLabel in der Routine mit dem create einen Namen bekommen?

Wenn beides ja, dann wäre doch über findcomponent(Name) das Label auszumachen. Sinnvollerweise mit einer lokalen Variable vom Typ TLabel.
Mir scheint, du hast in MyLabel halt immer die zuletzt erzeugte Komponente im Zugriff.

Kleiner Trick für das destroy deiner Komponenten:
Wenn möglich alles auf ein Panel legen (Parent). Wenn dann die Komponenten nicht mehr gebraucht werden, das Panel zerstören. Klappt in Delphi wunderbar.

Gruß

Peter
Zeiterfassung, einfach gerechter!

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Beitrag von khh »

@Peter
Ist MyLabel global definiert?
Hat myLabel in der Routine mit dem create einen Namen bekommen?
beides ja
ich wollte halt findcomponent nicht benutzen, wenns nicht unbedingt sein muss
Gruss Kh

petermännchen
Beiträge: 92
Registriert: So 26. Aug 2007, 20:35
OS, Lazarus, FPC: Win7, Laz 1.2.6, FPC 2.6.4, SVN 33306, ZEOS 7.1.4
CPU-Target: 32Bit
Wohnort: Helmstedt
Kontaktdaten:

Beitrag von petermännchen »

Hallo KH,

muss sein oder du legst dir globale Variablen an welche dann den Zeiger auf die neue Komponente bekommen. Dann könntest du aber auch schon die Komponenten aufs Formular legen und bei Bedarf initialisieren.

Wo ist das Problem mit fundcomponent?

Gruß

Peter
Zeiterfassung, einfach gerechter!

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Beitrag von khh »

Hallo Peter,
mit findcomponet muss ich ja auch erst feststellen, wie das "angeklickte" Label heisst.
ich habs jetzt so gelöst, dass ich im StartDrag meines TCustomControl
eine Variable "aktLabel" mit "Sender" belege. Darin hab ich ja die Adresse meines Labels.

Mit : TMyLabel(aktLabel).XY kann ich dann auf das richtige Label zugreifen.

Gruss KH

Antworten