| Autor |
Beitrag |
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Sa 14.05.05 23:13
//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
///////////////Erkentnisse aus diesem Thread: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Habs mir panel nicht hinbekommen: Meine Lösung hier
//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Also diesen Code hab ich mir nun jetzt zusammengereimt:
Delphi-Quelltext
Nun aus einer procedure eines buttons
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| if FindComponent('smpanel')<>nil then smpanel.free;smpanel:=Tpanel.Create(form2); with smpanel do begin Height:=Form2.Height; left:=Form2.Height; parent:=Form2; top:=Form2.Height; Height:=Form2.Height; Width:=Form2.Height; name:='smpanel'; caption:=''; end; |
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
Zuletzt bearbeitet von crakos am So 15.05.05 17:23, insgesamt 1-mal bearbeitet
|
|
Moony
      
Beiträge: 97
Win XP
D7 Prof
|
Verfasst: Sa 14.05.05 23:50
Also so wie ich das gelernt hab, müssen vor den := immer schön brav Leerzeichen hin. Oder ist das gar nicht notwendig??
Und wenn ich das richtig sehen. Dann gibst du den smpanel frei und dann initialisierst du gleich einen neuen? ahaha, jaja, ich hab keine Ahung  sorry
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Sa 14.05.05 23:56
die Leerzeichen müssen da nicht hin, dem compiler ist das schnuppe, der liest alles eh nacheinander :>
Aber danke für den versuch 
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 14.05.05 23:58
die leerzeichen sind nur für die Übersicht. es wäre natürlich praktisch zu wissen, WAS nicht klappt bzw. welche fehlermeldung kommt.
edit:Bleibt es einfach liegen? Versuchs mal mit Application.Processmessages...
edit2: Letztendlich brauchst du das Panel doch nicht freizugeben, oder? Wenn du die neuen eigenschaften setzt, dann klappt das doch trotzdem oder?
edit3: Dashier klappt bei mir prima:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var Form1:TForm; Panel1:TPanel;
procedure TForm1.Button1Click(Sender: TObject); begin Panel1.Free; end;
procedure TForm1.Button2Click(Sender: TObject); begin Panel1:=TPanel.Create(Form1); Panel1.Parent:=Form1; panel1.Top:=10; panel1.left:=10; panel1.Width:=100; panel1.height:=100; end; |
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Zuletzt bearbeitet von JayEff am So 15.05.05 00:05, insgesamt 1-mal bearbeitet
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: So 15.05.05 00:05
achso der fehler ist einfach, das das panel nicht gelöscht wird. denn beim wiederholten klicken auf den button, sagt delphi mir das es einen panel mit diesem namen schon gibt.
Also wurde es nicht gelöscht! So und nun warum?
Application... hat nicht geholfen
genausowenig wie form2.update oder mainform.update
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 15.05.05 00:06
dann lass das freeen und das createn einfach mal weg...?
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: So 15.05.05 00:09
äh das geht ja net, hab das ja extra gemacht, auf dem panel liegen über 100 button ^^ die sollten verschwinden, wenn ich panel free mache(wurde in nem anderen thread gesagt)
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: So 15.05.05 00:12
ah der fehler liegt in
Delphi-Quelltext 1:
| if FindComponent('smpanel')<>nil then |
das trit nicht ein, aber warum?
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 15.05.05 00:20
oh. ähm. hm.
Bei mir tritt if FindComponent ... <>nil immer ein.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm2.Button2Click(Sender: TObject); begin if FindComponent('smpanel') <> nil then showmessage('123'); if FindComponent('smpanel') <> nil then smpanel.free; smpanel:=Tpanel.Create(form2); with smpanel do begin parent:=Form2; Top:=1; left:=1; Height:=10; Width:=10; name:='smpanel'; caption:=''; end; end; |
Macht er bei mir einwandfrei... also er sagt, Panel existiert, und gibt es somit auch frei und erzeugt es auch gleich neu. werden vielleicht die buttons nicht freigegeben? versuchs doch so: Lösche die Buttons einzeln. ich hab zumbeispiel dashier getestet:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm2.Button1Click(Sender: TObject); var i:integer; begin for i:=0 to 10 do begin with TPanel.Create(Form2) do begin parent:=Form2; Top:=1+i*10; left:=1+i*10; Height:=10; Width:=10; name:='smpanel'+IntToStr(i); caption:=''; end; end; end; procedure TForm2.Button2Click(Sender: TObject); var i:integer; begin for i:=0 to 10 do begin if FindComponent('smpanel'+IntToStr(i)) <> nil then (FindComponent('smpanel'+IntToStr(i)) as TPanel).free; end; end; |
Klappt einwandfrei. Damit sind die Panels alle wieder weg.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: So 15.05.05 00:39
es ist nur ein panel, auf dem 100 buttons sind.
rall ich nicht, warum geht das bei dir, aber bei mir nicht?
Warum geht das nicht ..... if FindComponent('smpanel') ist immer 0 '%&'$'§#
Da es ja nur um eine abfrage geht, hab ich es mit einer boolschen variablen geregelt
aber nun sind grad gar keine buttons da :/ omg
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
Zuletzt bearbeitet von crakos am So 15.05.05 00:44, insgesamt 2-mal bearbeitet
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 15.05.05 00:41
wie hast du die Buttons genannt? versuch sie, so wie ich die panels, in einer schleife freizugeben...
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: So 15.05.05 00:46
mh das panel hab ich ja extra gemacht, weil mir auf meine frage, wie bekomme ich die buttons weg, gesagt wurde: auf ein panel machen dann panel free und alle buttons wech.
oder TobjectListe <--- hab aber bis jetzt kein gescheites Tutorial gefunden
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 15.05.05 00:49
hast du den buttons das Panel als Parent gegeben? ich glaube, dass das sein muss. aber die Buttons in einer schleife freigeben klappt doch auh, jenachdem, wie sie genannt sind...?
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: So 15.05.05 00:55
hab die panel sachen nun alle weg commentiert, wollte nun so eine schleife machen.
Nun ich weiss die id von den buttons aber wie frage ich die mit FindComponent ab?
die buttons sind in einem array of array of tbutton
die namen sind alle anders
das einzige was man von den buttons weiss, ist die id
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 15.05.05 00:58
wenn die in einem array of array of TButton sind, dann mach doch einfach
Delphi-Quelltext 1: 2: 3:
| for x:=0 to 10 do for y:=0 to 10 do buttons[x][y].free; |
odrer so ähnlich?
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: So 15.05.05 01:02
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 15.05.05 01:10
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Sprint
      
Beiträge: 849
|
Verfasst: So 15.05.05 08:55
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: So 15.05.05 13:46
yeah, genau sowas hab ich gesucht  einfach,unkompliziert und man versteht es sofort
Vielen dank 
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: So 15.05.05 16:53
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|