[delphi] var probleem

Pagina: 1
Acties:

  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 08-09 11:48
ik heb een aantal buttons die het button1 button2 enz....

nu heb ik alleen het nummer dus bijv 2
dan maak ik een string met als value button2
en als naam deleteButton

maar hoe kan ik dan die button verwijderen :?

Form1.Toolbar1.deleteButton.destroy Mag niet
omdat deleteButton niet bestaat als button naam

iemand een idee

PSN jschut_82 | Xbox: JSchut82


Verwijderd

ik heb ook al es zowiets gehad... het "eval" van delphi maar dat was met tabellen en k weet niet meer precies hoe t zat. maar t gaat wel

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 22:30

mulder

ik spuug op het trottoir

Z'n index gebruiken.

oogjes open, snaveltjes dicht


Verwijderd

components[] / componentcount

of

FindComponent(deleteButton).free;

  • JSchut
  • Registratie: Februari 2002
  • Laatst online: 08-09 11:48
ik weet z'n index niet alleen de naam

PSN jschut_82 | Xbox: JSchut82


Verwijderd

Op dinsdag 14 mei 2002 10:26 schreef JSchut het volgende:
ik heb een aantal buttons die het button1 button2 enz....

nu heb ik alleen het nummer dus bijv 2
dan maak ik een string met als value button2
en als naam deleteButton
Je hebt de naam dus zal het vrij eenvoudig zijn om je TButton op te zoeken.
Hiervoor gebruik je de Button zijn parent.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
const
  sName: String='';
  C: TComponent=nil;
begin
  sName := InputBox('Voorbeeld', 'Voer component naam in:', 'Button1');
  if sName<>'' then
  begin
    C:=FindComponent(sName);
    if Assigned(C) then
    C.Free;
  end;
end;

Dit voorbeeld spreekt voor zich.
Eventueel kun je de regel if Assigned(C) then vervangen door:
code:
1
  if (Assigned(C)) and (C is TButton) then

In bovengenoemd geval zal alleen de knop worden vrijgegeven als deze een TButton is.
Form1.Toolbar1.deleteButton.destroy Mag niet
omdat deleteButton niet bestaat als button naam
Dit mag niet omdat je appels met peren vergelijkt, strings met TCOmponents. Probeer bovengenoemd voorbeeld maar eens toe te passen op jouw toolbar.
Extra tipje: GEBRUIK GEEN DESTROY! Gebruik Free, veel veiliger. Wil je het helemaal goed doen dan gebruik je FreeAndNil(); Oh ja, bij een afgeleide van TForm kun je beter Release gebruiken.

Veel suc6.

Verwijderd

Op dinsdag 14 mei 2002 10:55 schreef hvdberg het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
const
  sName: String='';
  C: TComponent=nil;
begin
  sName := InputBox('Voorbeeld', 'Voer component naam in:', 'Button1');
  if sName<>'' then
  begin
    C:=FindComponent(sName);
    if Assigned(C) then
    C.Free;
  end;
end;
waarom gebruik (misbruik) je writeable typed constants hiervoor?
je kan beter var's gebruiken, omdat type-constants ook geheugen in beslag nemen, als je niet in de procedure zit.
Jouw code werkt trouwens niet in delphi 6 tenzij je {$J+}
of {$WRITEABLECONST ON} doet.

Verwijderd

Op dinsdag 14 mei 2002 11:01 schreef deur het volgende:
waarom gebruik (misbruik) je writeable typed constants hiervoor?
Is gewoon mijn manier van programmeren (niet bewust gebeurd) aangezien ik mijn declaratie en assignment in één statement heb. Nou is dat voor Delphi-strings niet nodig maar een integer wordt standaard niet naar gezet.
[/quote]
je kan beter var's gebruiken, omdat type-constants ook geheugen in beslag nemen, als je niet in de procedure zit.
Jouw code werkt trouwens niet in delphi 6 tenzij je {$J+}
of {$WRITEABLECONST ON} doet.
[/quote]
Delphi 5 gebruikt :)
Pagina: 1