AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte löschen

Ein Thema von devnull · begonnen am 29. Nov 2003 · letzter Beitrag vom 4. Dez 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#11

Re: Objekte löschen

  Alt 30. Nov 2003, 16:03
Delphi-Quellcode:
procedure TOkBottomDlg.Neues_Button_erstellen (x, y, h, w : integer; const name : string);
var NewButton: {TSpeed}TButton;
    i : integer;
    str1b : string;
begin
  NewButton := TButton.Create(OkBottomDlg.Bevel1);
  // Eigenschaften des neuen Buttons festlegen:
  with NewButton do begin
    Parent := OkBottomDlg;
    Caption := name;
    Top := y;
    Left := x+25;
    Height := h;
    Width := w;
    @NewButton.OnClick := @MeinEigenesOnClick;
  end;
  inc (buttons_anzahl);
  if buttons_anzahl <= 20 then buttons_names [buttons_anzahl] := name;
end;
Die Proze wird aber aus einer anderen Unit ausgeführt (Form1) und in OKBottomDlg ausgeführt ...

Zum löschen:

Delphi-Quellcode:
procedure Buttons_loeschen;
var i : integer;
    NewButton: TButton;
begin
  for i := 1 to Buttons_Anzahl do begin
      try
        OKBottomDlg.FindComponent(Buttons_names[i]).Free;
      except
      end;
  end;
end;
Die Proze rufe ich auf, bevor OKBottomDlg geschlossen wird (OKBottomDlg.Close);
Auch wenns nich so toll sein sollte ...

Ich weis nich, worans liegt

devnull
-- Never change a running system --
  Mit Zitat antworten Zitat
Basic-Master

Registriert seit: 9. Mär 2003
Ort: Brilon
395 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Objekte löschen

  Alt 30. Nov 2003, 16:10
versuch den code zum erstellen:
Delphi-Quellcode:
procedure TOkBottomDlg.Neues_Button_erstellen (x, y, h, w : integer; const name : string);
var NewButton: {TSpeed}TButton;
    i : integer;
    str1b : string;
begin
  NewButton := TButton.Create(OkBottomDlg.Bevel1);
  // Eigenschaften des neuen Buttons festlegen:
  with NewButton do begin
    Parent := OkBottomDlg;´
    inc(buttons_anzahl);
    Name := 'NeuesButton' + IntToStr(buttons_anzahl);
    Caption := name;
    Top := y;
    Left := x+25;
    Height := h;
    Width := w;
    @NewButton.OnClick := @MeinEigenesOnClick;
  end;
  if buttons_anzahl <= 20 then buttons_names [buttons_anzahl] := name;
end;
und den zum löschen:
Delphi-Quellcode:
var i:integer;
begin
for i := 0 to button_anzahl do //du hast doch button_anzahl global deklariert oder?
  OkBottomDlg.FindComponent('NeuesButton' + inttostr(i)).Free;
end;
habs jetzt nicht getestet, sollte aber funzen...
Christian
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#13

Re: Objekte löschen

  Alt 30. Nov 2003, 18:48
Also das geht trotzdem nicht. Ich muss nach dem Löschen ja die button_anzahl := 0; setzen (is übrigens global).
Wenn ich dann aber wieder neue Buttons erstellen möchte und wieder bei button_anzahl := 1; anfange, kommt ein Fehler: NeuesButton1 existiert bereits
-- Never change a running system --
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#14

Re: Objekte löschen

  Alt 3. Dez 2003, 21:19
Kann mir keiner sagen, wie ich eine Form komplett 'auflösen' kann, d.h. sie in den Zustand zurückversetzen, in welchem sie erstellt wurde ?


devnull
-- Never change a running system --
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#15

Re: Objekte löschen

  Alt 3. Dez 2003, 21:39
Hi.

Das ganze Form mit

Form.Free; Die ganzen Komponenten eines Forms, ohne das Form selber mit

Form.DestroyComponents; Man liest sich, Stanlay
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#16

Re: Objekte löschen

  Alt 3. Dez 2003, 21:47
Ich hab das mit Form.DestroyComponents; probiert, wenn ich jetzt aber nun auf die Form Buttons erstellen möchte, kommt ein Fehler ...

devnull
-- Never change a running system --
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#17

Re: Objekte löschen

  Alt 3. Dez 2003, 22:10
Ahh, Schande über mich. Natürlich gehts ! Ich hatte vergessen, ein Bevel neu zu erstellen, da ich in diesem Buttons erstelle !!!

devnull
-- Never change a running system --
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#18

Re: Objekte löschen

  Alt 4. Dez 2003, 14:42
Hi,

wenn du alles resetten willst und anschliessend dir das formular wieder mit den DFM daten initialisieren willst, dann kannst du folgendes tun:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
   RemoveComponent(TComponent(Sender)); // wichtig weil sonst der button gelöscht wird, den man drückt...was dann eine accessViolation auslöst

   DestroyComponents;

   if not InitComponentRes(self.ClassName, Self) then ShowMessage('failed'); // DFM init aus den resourcen

   TComponent(Sender).FreeOnRelease; // wird nicht mehr benötigt -> 'soft kill'
end;
mfg. maximob
  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 09:16 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