Autor |
Beitrag |
Grafix
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: Sa 24.04.10 18:04
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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Grafix 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: 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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Grafix 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: 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
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: 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?
_________________ Die Lösung ist nicht siebzehn.
|
|
Grafix 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: 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
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Sa 24.04.10 22:44
Du musst auch noch beim Erstellen ParentBackground auf false setzen
_________________ Die Lösung ist nicht siebzehn.
|
|
Grafix 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: 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!!!!
|
|