AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Button + Edit Feld - zur Laufzeit entfernen?
Thema durchsuchen
Ansicht
Themen-Optionen

Button + Edit Feld - zur Laufzeit entfernen?

Ein Thema von atgis · begonnen am 18. Dez 2007 · letzter Beitrag vom 19. Dez 2007
Antwort Antwort
Seite 2 von 2     12   
atgis
(Gast)

n/a Beiträge
 
#11

Re: Button + Edit Feld - zur Laufzeit hinzufügen?

  Alt 18. Dez 2007, 22:55
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!

http://s2.directupload.net/images/071218/7kfu73cj.jpg
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Button + Edit Feld - zur Laufzeit hinzufügen?

  Alt 18. Dez 2007, 23:14
Das ist ja auch kein Wunder, da i bei dir eine lokale Variable ist. Dann schon eher die Variable im private Abschnitt deklarieren.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
atgis
(Gast)

n/a Beiträge
 
#13

Re: Button + Edit Feld - zur Laufzeit hinzufügen?

  Alt 19. Dez 2007, 13:30
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:
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;
Ist das so i.o.? Oder sollte ich das besser anders machen?


Wie kann ich mit den "-" Button die jeweils letzten beiden Objekte löschen?
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Button + Edit Feld - zur Laufzeit hinzufügen?

  Alt 19. Dez 2007, 16:44
Zitat von atgis:
Wie kann ich mit den "-" Button die jeweils letzten beiden Objekte löschen?
Die einfache aber unschöne Variante wäre mit FindComponent
Delphi-Quellcode:
var
  Edt: TEdit;
begin
  Edt:= TEdit(self.FindComponent('Edit'+IntToStr(i)));
  if System.Assigned(Edt) then
  begin
    dec(i);
    Edt.Free;
  end;
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.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
atgis
(Gast)

n/a Beiträge
 
#15

Re: Button + Edit Feld - zur Laufzeit entfernen?

  Alt 19. Dez 2007, 19:54
Aber leider kann ich so den Button nicht löschen...
Delphi-Quellcode:
  Bt:= TBitBtn(self.FindComponent('BitBtn'+IntToStr(i)));
  if System.Assigned(Bt) then
  begin
    dec(i);
    Bt.Free;
  end;
EDIT: Geht doch hatte Edt.Free geschrieben... Gut Danke für den Tipp...

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:
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;
So spielt es aber immer den Sound aus dem 1.Edit Feld ab...ist ja klar
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
begin
 sndPlaySound(PChar(Edit.Text),SND_ASYNC);
end;
Also müsste ich schon beim erzeugen des Buttons
sndPlaySound(PChar(Edit + i.Text),SND_ASYNC); mit einen OnClick Ereignis zuordnen?

Wie mache ich das?

OnClick:= ?
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Button + Edit Feld - zur Laufzeit entfernen?

  Alt 19. Dez 2007, 22:25
Man könnte den Tag vom TBitBtn benutzen, dazu müsste man den vorigen Code noch etwas anpassen.
Delphi-Quellcode:
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;
Dann auslesen:
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
begin
  if Sender is TBitBtn then
    Showmessage(TEdit(TBitBtn(Sender).Tag).Text);
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz