![]() |
Name von Dyn. generiertem Image auf einem Dyn. gener. Panel
Hallo zusammen :)
Ich habe wieder ein Problem bei dme ich keine Lösung finde :( Wie schon so oft gesagt programmiere ich der Zeit ein Memoryspiel. Das Programm erstellt Dynamisch Panels die als Spielkarten dienen. Auf den Panels werden ebenfalls Dynamisch Images erzeugt und diesen per zufall Motive zugeordnet. Jedes Motiv genau 2 mal wie es beim Memory halt sein muss. Nun bin ich dabei das eigentliche Spielprinzip zu programmieren und habe den Dyn. generierten Panels eine Onclick Prozedur zugefügt.
Delphi-Quellcode:
nun kann ich durch den (Sender as TPanel) den namen des Panels bekommen und diesen somit ausbleden wenn der User zwei der gleichen motive aufdeckt, welches ich durch den Tag unterscheide (Jedes bild ein Tag-Wert)
// 4 Spielkarten erstellen
procedure TForm1.Case1; var i:integer; test:string; const NamePrefix = 'Panel'; NamePrefix2 = 'Image'; begin links :=10; oben :=10; breite :=120; hoehe :=120; verschiebung :=130; bild := 0; loop := 0; use := 0; use1 := 0; pa := 1; for i := 1 to 4 do begin MyPanel1 := TPanel.Create(Self); with MyPanel1 do begin Name := NamePrefix + IntToStr(i); Caption := 'Virtual-Memory'; Color := clCream; onClick := Form1.dynPanelOnClick; SetBounds(links, oben, breite, hoehe); Inc(oben,verschiebung); // Erhöht "oben" um "verschiebung" if i = 2 then begin Inc(links,verschiebung); oben := 10; end; parent:=Self; end; MyImage1 := TImage.Create(Self); with MyImage1 do begin Name := NamePrefix2 + IntToStr(i); SetBounds(12,12,95,95); repeat bild := Random(2); bilderzuordnung; until loop = 1; bilderzuordnung2; Picture.LoadFromFile(useBild); parent:=MyPanel1; end; end; end; Nun ist mir aufgefallen das ich die Motive ja erstmal sichtbar machen muss, was heisst ich muss den Image den ich am Anfang visible := false; setze true setzen sobald der User auf die Karte klickt. MEINE FRAGE: Woher bekomme ich den Namen des Images, welcher sich auf dem panel befindet den der User angeklickt hat? Weiß jemand Rat? Weil ich habe so langsam keinen Schimmer mehr was ich machen soll. Hier noch die OnClick Prozedur.
Delphi-Quellcode:
Vielen Dank schon im Voraus!
// OnClick mit einem Dynamischen Panel
procedure TForm1.dynPanelOnClick(sender: TObject); begin with (Sender as TPanel) do begin zug := (Sender as TPanel).Name; if merker = 0 then begin name1 := (Sender as TPanel).Name; tag1 := (Sender as TPanel).Tag; merker := 1; end; if zug <> name1 then begin (Sender as TPanel).Visible := true; name2 := (Sender as TPanel).Name; tag2 := (Sender as TPanel).Tag; merker := 0; end; Label1.Caption := name1; Label2.Caption := IntToStr(tag1); Label3.Caption := name2; Label4.Caption := IntToStr(tag2); end; end; |
Re: Name von Dyn. generiertem Image auf einem Dyn. gener. Pa
Zitat:
Delphi-Quellcode:
procedure TForm1.Panel1Click(Sender: TObject);
begin Caption := TImage(Panel1.Controls[0]).Name // Vorausgesetzt, es gibt nur ein Image Control auf dem Panel. end; |
Re: Name von Dyn. generiertem Image auf einem Dyn. gener. Pa
Fast:
Code:
[b]Procedure[/b] TForm1.Panel1Click(Sender: TObject);
[b]Begin[/b] Caption := TImage([color=red]Sender[/color].Controls[0]).Name; [b]End[/b];
Code:
[color=gray]Objekt[/color].ComponentCount [color=midnightblue]{Anzahl der untergeordneten Komponenten}[/color]
[color=gray]Objekt[/color].Components[x] [color=midnightblue]{eine der untergeordneten Komponenten}[/color] |
Re: Name von Dyn. generiertem Image auf einem Dyn. gener. Pa
das hört sich schonmal sehr gut an :D
könnt ihr mir auch noch sagen wo ich das im Quellcode eintragen muss?? Und warum caption? :) |
Re: Name von Dyn. generiertem Image auf einem Dyn. gener. Pa
Das Caption hatte toms nur für's Beispiel verwendet, er wollte das Ergebnis (den Namen) ja irgendwo zuweisen.
Delphi-Quellcode:
Procedure TForm1.dynPanelOnClick(Sender: TObject);
Begin With (Sender as TPanel) do Begin zug := (Sender as TPanel).Name; If merker = 0 Then Begin name1 := (Sender as TPanel).Name; tag1 := (Sender as TPanel).Tag; {Imagename1 := TImage(Sender.Controls[0]).Name;} Imagename1 := (Sender.Controls[0] as TImage).Name; merker := 1; End; If zug <> name1 Then Begin (Sender as TPanel).Visible := true; name2 := (Sender as TPanel).Name; tag2 := (Sender as TPanel).Tag; {Imagename1 := TImage(Sender.Controls[0]).Name;} Imagename1 := (Sender.Controls[0] as TImage).Name; merker := 0; End; Label1.Caption := name1; Label2.Caption := IntToStr(tag1); Label3.Caption := name2; Label4.Caption := IntToStr(tag2); End; End; |
Re: Name von Dyn. generiertem Image auf einem Dyn. gener. Pa
OK, der Fehler ist behoben.
(Sender.Controls[0] würde überarbeitet)
Delphi-Quellcode:
Procedure TForm1.dynPanelOnClick(Sender: TObject);
Begin With (Sender as TPanel) do Begin zug := (Sender as TPanel).Name; If merker = 0 Then Begin name1 := (Sender as TPanel).Name; tag1 := (Sender as TPanel).Tag; {Imagename1 := TImage(TPanel(Sender).Controls[0]).Name;} Imagename1 := ((Sender as TPanel).Controls[0] as TImage).Name; merker := 1; End; If zug <> name1 Then Begin (Sender as TPanel).Visible := true; name2 := (Sender as TPanel).Name; tag2 := (Sender as TPanel).Tag; {Imagename2 := TImage(TPanel(Sender).Controls[0]).Name;} Imagename2 := ((Sender as TPanel).Controls[0] as TImage).Name; merker := 0; End; Label1.Caption := name1; Label2.Caption := IntToStr(tag1); Label3.Caption := name2; Label4.Caption := IntToStr(tag2); End; End; |
Re: Name von Dyn. generiertem Image auf einem Dyn. gener. Pa
Ich hab Ihn in ICQ dran, nicht das ihr noch denkt, ich mache Selbstgespräche :wink:
Delphi-Quellcode:
Var Image1, Image2: TImage;
Procedure TForm1.dynPanelOnClick(Sender: TObject); Begin With (Sender as TPanel) do Begin zug := (Sender as TPanel).Name; If merker = 0 Then Begin name1 := (Sender as TPanel).Name; tag1 := (Sender as TPanel).Tag; Image1 := (Sender as TPanel).Controls[0] as TImage; merker := 1; End; If zug <> name1 Then Begin (Sender as TPanel).Visible := true; name2 := (Sender as TPanel).Name; tag2 := (Sender as TPanel).Tag; Image2 := (Sender as TPanel).Controls[0] as TImage; merker := 0; End; Label1.Caption := name1; Label2.Caption := IntToStr(tag1); Label3.Caption := name2; Label4.Caption := IntToStr(tag2); End; End; Image1.Visible := True; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz