Autor Beitrag
Grafix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Sa 24.04.10 18:04 
Hallo nochmal,

ich habe X zur Laufzeit erzeugte Panel, und das folgendermaßen:
ausblenden 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TFStart.PanelXOnMouseEnter(Sender: TObject);
  var MyPanel: TPanel;
  Pfad : String;
begin
  //MyPanel.Color := clBtnHighlight; --> funktioniert so nicht, alle Panels inklusive des Hintergrunds färben sich//
  Pfad := 'PanelX' + IntToStr(TPanel(Sender).Tag) + 'Player1';
  Pfad.Color := clBtnHighlight; // funktioniert auch nicht, da Pfad ja kein Objekt ist
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 24.04.10 18:12 
das kannst du es ja genauso machen wie mit dem Tag, also:

ausblenden Delphi-Quelltext
1:
TPanel(Sender).Color := clBtnHighlight;					


generell würd ich aber die Procedure in folgendes einfassen:

ausblenden Delphi-Quelltext
1:
2:
3:
if (Sender is TPanel) then begin
  //deine procedure
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Sa 24.04.10 21:19 
Bin ganz :?
Wo kommt beim standart TPanel das onMouseEnter her!? Ich habe es nicht drin in den Ergeignissen!
ausblenden Delphi-Quelltext
1:
MyPanel.OnMouseEnter := PanelXOnMouseEnter;					

Ich würde dafür
ausblenden Delphi-Quelltext
1:
MyPanel.OnMouseDown := PanelXOnMouseEnter;					

oder
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Sa 24.04.10 22:44 
Du musst auch noch beim Erstellen ParentBackground auf false setzen

_________________
Die Lösung ist nicht siebzehn.
Grafix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: 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!!!!