Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Eigenschaften eines Dynamisch erzeugten Panels
Grafix - Sa 24.04.10 18:04
Titel: Eigenschaften eines Dynamisch erzeugten Panels
Hallo nochmal,
ich habe X zur Laufzeit erzeugte Panel, und das folgendermaßen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TFStart.FormShow(Sender: TObject); var MyPanel: TPanel; begin
for I := 1 to X do begin MyPanel := TPanel.Create(Self); MyPanel.Parent := GBPlayer1; MyPanel.Name := 'PanelX' + IntToStr(I+(K*X)-X) + 'Player1'; MyPanel.Caption := IntToStr(I+(K*X)-X); MyPanel.Tag := I+(K*X)-X; MyPanel.OnMouseEnter := PanelXOnMouseEnter; end; end; |
dieses PanelXOnMouseEnter Event möchte ich nun definieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TFStart.PanelXOnMouseEnter(Sender: TObject); var MyPanel: TPanel; Pfad : String; begin Pfad := 'PanelX' + IntToStr(TPanel(Sender).Tag) + 'Player1'; Pfad.Color := clBtnHighlight; end; |
Wo ist der Fehler? Mir ist schon klar dass das mit dem Pfad so nicht geht, ich komme nur nicht drauf...
Danke für die Hilfe
Lg Grafix
elundril - Sa 24.04.10 18:12
das kannst du es ja genauso machen wie mit dem Tag, also:
Delphi-Quelltext
1:
| TPanel(Sender).Color := clBtnHighlight; |
generell würd ich aber die Procedure in folgendes einfassen:
Delphi-Quelltext
1: 2: 3:
| if (Sender is TPanel) then begin end; |
Und ich würde dir raten nicht clBtnHighlight zu nehmen da diese Farbe vom Betriebssystem abhängig ist und bei anderen PC einen anderen Wert haben könnte. Dadurch sieht dann das Programm nicht mehr so aus wie du es gern hättest.
lg elundril
Grafix - Sa 24.04.10 19:14
erstmal danke fürs freundliche und schnelle beantworten meiner vielen Fragen =)
Leider klappt's aber noch nicht so ganz:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TFStart.PanelXMouseEnter(Sender: TObject); begin if (Sender is TPanel) then begin TPanel(Sender).Color := clRed; ShowMessage(IntToStr(TPanel(Sender).Tag)); end; end; |
er Zeigt mir nun die Zahl an, die ich mit Panel.Tag zugewiesen habe, aber er ändert leider nicht die Farbe...
ALF - Sa 24.04.10 21:19
Bin ganz :?
Wo kommt beim standart TPanel das onMouseEnter her!? Ich habe es nicht drin in den Ergeignissen!
Delphi-Quelltext
1:
| MyPanel.OnMouseEnter := PanelXOnMouseEnter; |
Ich würde dafür
Delphi-Quelltext
1:
| MyPanel.OnMouseDown := PanelXOnMouseEnter; |
oder
Delphi-Quelltext
1:
| MyPanel.OnClick := PanelXOnMouseEnter; |
nehmen. Vielleicht funct es dann!?
Gruss Alf
elundril - Sa 24.04.10 22:04
Oder vielleicht OnMouseMove. Wäre vielleicht auch eine alternative.
Oder man leitet sich aus dem Panel eine eigene Komponente ab und erweitert diese um OnMouseEnter.
lg elundril
Grafix - Sa 24.04.10 22:20
Hm, keine der Varianten funktioniert...
Eine Komponente Abzuleiten traue ich mir nicht zu... Liegt der Fehler möglicherweise bei dem TPanel(Sender).Color... ?
Mitmischer 1703 - Sa 24.04.10 22:29
Du könntest (Sender as TPanel).Color verwenden, aber das dürfte auch nicht viel ändern...
Bist du schon mal mit dem Debugger durchgegangen, ob er überhaupt in die Funktion springt oder was bei der Zuweisung passiert?
Grafix - Sa 24.04.10 22:33
Funktioniert leider auch nicht - das merkwürdige ist: wenn ich in die gleiche Prozedur mit reinschreibe:
ShowMessage(IntToStr(TPanel(Sender).Tag));
zeigt er mir den Tag des Pannels an - nur führt er anscheinend nicht den Befehl zum Farben-ändern aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TFStart.PanelXMouseMove(Sender: TObject); begin if (Sender is TPanel) then begin (Sender as TPanel).Color := clRed; ShowMessage(IntToStr(TPanel(Sender).Tag)); end; end; |
Mitmischer 1703 - Sa 24.04.10 22:44
Du musst auch noch beim Erstellen ParentBackground auf false setzen
Grafix - Sa 24.04.10 22:50
Das war tatsächlich der Fehler *freu* - kA wieso aber anscheinend ist das nötig mit parentBackground... Ich habs bei einem manuell erstellten Panel ausprobiert - da hat alles funktioniert - offensichtlich ist parentBackground dort standartmäßig auf False gesetzt...
DANKE!!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!