![]() |
Re: Button + Edit Feld - zur Laufzeit hinzufügen?
Ja ich weiß...habe es umbenannt...jetzt kann ich auch 1mal meine neuen Objekte hinzufügen. Klicke ich aber nochmal auf das + will es wieder ein Edit1 erstellen, was ja schon vorhanden ist!
![]() ![]() |
Re: Button + Edit Feld - zur Laufzeit hinzufügen?
Das ist ja auch kein Wunder, da i bei dir eine lokale Variable ist. Dann schon eher die Variable im private Abschnitt deklarieren.
|
Re: Button + Edit Feld - zur Laufzeit hinzufügen?
Ok Danke... ich hab noch eine Frage wegen der Ausrichtung der neuen Objekte...
Left und Top müssen ja sozusagen auch immer wieder mit hochgezählt werden. Ich hab das jetzt erstmal so gemacht:
Delphi-Quellcode:
Ist das so i.o.? Oder sollte ich das besser anders machen?
procedure TForm1.Button1Click(Sender: TObject);
begin inc(i); with TEdit.Create(self) do begin Parent:= Self; Name:= 'Edit'+IntToStr(i); Left:= 8; Top:= 7+(i)*(25); //i würde ja nur 1 Pixel Abstand ergeben...deswegen mal 25 für 25px... Width:= 233; end; with TBitBtn.Create(self) do begin Parent:= Self; Name:= 'BitButn'+IntToStr(i); Caption:= 'Play'; Left:= 244; Top:= 7+(i)*(25); //...deswegen mal 25 für 25px Width:= 22; Height:= 22; end; end; Wie kann ich mit den "-" Button die jeweils letzten beiden Objekte löschen? |
Re: Button + Edit Feld - zur Laufzeit hinzufügen?
Zitat:
Delphi-Quellcode:
besser wäre jedoch wenn du deine dynamisch erzeugten Komponenten in einer TComponentList oder zumindest in einem Array verwaltest, als sie jedesmal erst zu suchen.
var
Edt: TEdit; begin Edt:= TEdit(self.FindComponent('Edit'+IntToStr(i))); if System.Assigned(Edt) then begin dec(i); Edt.Free; end; |
Re: Button + Edit Feld - zur Laufzeit entfernen?
Aber leider kann ich so den Button nicht löschen...
Delphi-Quellcode:
EDIT: Geht doch :wall: hatte Edt.Free geschrieben... Gut Danke für den Tipp...
Bt:= TBitBtn(self.FindComponent('BitBtn'+IntToStr(i)));
if System.Assigned(Bt) then begin dec(i); Bt.Free; end; So...jetzt will ich ja per Klick auf den Button einen Sound abspielen...den jeweiligen Pfad zur Datei, bekomme ich aus dem Edit Feld... also Edit+IntToStr(i)... Aufrufen will ich die Prozedure so:
Delphi-Quellcode:
So spielt es aber immer den Sound aus dem 1.Edit Feld ab...ist ja klar
with TBitBtn.Create(self) do
begin Parent:= Self; Name:= 'BitBtn'+IntToStr(i); Caption:= '>'; Left:= 243; Top:= 6+(i)*(25); Width:= 22; Height:= 22; OnClick:=ButtonClick; //<--- hier der Aufruf end; end;
Delphi-Quellcode:
Also müsste ich schon beim erzeugen des Buttons
procedure TForm1.ButtonClick(Sender: TObject);
begin sndPlaySound(PChar(Edit.Text),SND_ASYNC); end;
Delphi-Quellcode:
mit einen OnClick Ereignis zuordnen?
sndPlaySound(PChar(Edit + i.Text),SND_ASYNC);
Wie mache ich das? OnClick:= ? |
Re: Button + Edit Feld - zur Laufzeit entfernen?
Man könnte den Tag vom TBitBtn benutzen, dazu müsste man den vorigen Code noch etwas anpassen.
Delphi-Quellcode:
Dann auslesen:
var
Edt: TEdit; begin inc(i); Edt:= TEdit.Create(self); with Edt do begin Parent:= Self; Name:= 'Edit'+IntToStr(i); Left:= 8; Top:= 6 + i * 25; Width:= 233; end; with TBitBtn.Create(self) do begin Parent:= Self; Name:= 'BitBtn'+IntToStr(i); Caption:= '>'; Left:= 243; Top:= Edt.Top; Width:= 22; Height:= 22; Tag:= cardinal(Edt);//<-- OnClick:=ButtonClick; end;
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
begin if Sender is TBitBtn then Showmessage(TEdit(TBitBtn(Sender).Tag).Text); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 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