Toon posts:

[Delphi] Interface Elementen in RUNTIME genereren

Pagina: 1
Acties:
  • 141 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Vraagje,

Ik moet voor een projectje een delphi programma schrijven. Hardstikke leuk maar ik zit met een probleempje. Ik ga een soort reminder proggie maken. Daar wordt ui een text file een aantal taken gelezen. Deze worden opgeslagen in TTaak. De TTaak elemetnen worden opgeslagen in een dynamische array genoaamd Taken.

Nu wil ik PER taak een reeks interface elementen genereren. Een Label (taaknaam), een ProgressBar (Taak progress) en een button (edit)

Nu heb ik een stukje code lopen frotten, maar hij wil de elementen niet plaatsen.

Dit is mijn code om de elemente te genereren. DE array van taken is met 2 items gevuld. Hoe krijg ik me element op het scherm.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TfrmMain.maakMeuk();
var i : integer;
begin
  setLength(pbars,aantalTaken);
  setLength(knopjes,aantalTaken);
  setLength(labels,aantalTaken);
  i := 0;
  while i < aantalTaken do
  begin
    //Aanmaken meuk!!
    pbars[i] := Tprogressbar.Create(SELF.boxTakenOverzicht);
    pbars[i].Enabled := true;
    pbars[i].SetBounds(1,1,100,100);
    pbars[i].Visible := true;
    pbars[i].Position := taken[i].TaakPercentage;
    pbars[i].Show;
    i := i + 1;
  end;
end;


En dan nog een vraagje, ik wil dus zoals gezegd een button maken. Is het mogelijk om aan als die buttons een generieke handler toe te passen? Of om aan te geven wat moet gebeuren bij klik? (de lessen waren namelijk maar een inleiding, en ik schat dat ik het mezelf weer te lastig heb gemaakt :D)

IIG ik zou u allen hartelijk danken als jullie weten hoe het wel moet...

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:45

Creepy

Tactical Espionage Splatterer

Van je in code aangemaakt objecten zul je de parent moeten zetten. De parent is datgene waar ze op getoond kunnen worden, de owner (die je meegeeft in de create) is verantwoordelijk voor het opschonen van geheugen.

Als je 1 onclick procedure hebt kan je deze procedure gewoon toekennen aan de onclick handlers van andere buttons
Delphi:
1
2
3
4
5
6
7
8
procedure tform1.button1click(sender: TObject);
begin
  //check welke knop het is
  if sender = button1 then
  begin
    //doe iets met de knop
  end;
end;

En dan ergens anders in je code iets ala
Delphi:
1
anderebutton.onclick:=form1.button1click;

Als je van te voren niet weet hoe de knop heet (wat altijd het geval is met in runtime aangemaakt knoppen) kan je gebruik maken van de tag property.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Creepy schreef op 22 June 2003 @ 17:18:
Van je in code aangemaakt objecten zul je de parent moeten zetten. De parent is datgene waar ze op getoond kunnen worden, de owner (die je meegeeft in de create) is verantwoordelijk voor het opschonen van geheugen.

Als je 1 onclick procedure hebt kan je deze procedure gewoon toekennen aan de onclick handlers van andere buttons
Delphi:
1
2
3
4
5
6
7
8
procedure tform1.button1click(sender: TObject);
begin
  //check welke knop het is
  if sender = button1 then
  begin
    //doe iets met de knop
  end;
end;

En dan ergens anders in je code iets ala
Delphi:
1
anderebutton.onclick:=form1.button1click;

Als je van te voren niet weet hoe de knop heet (wat altijd het geval is met in runtime aangemaakt knoppen) kan je gebruik maken van de tag property.
Tnx het werkt zover! k krijg nu mooi 2 scrollbarretjes..... Dat met parent had ik zo niet verwacht moet ik eerlijk zeggen, maar dat komt omdat ik nog teveel Java enzo gewend ben...

Nu heb ik als owner een scrollbox genomen... Dan zouder bij veel objecten dus ook de scroller in werking treden denk ik!

Iig met parent tekent hij hem idd op het vernster dat ik moet hebben!!

_/-\o_

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 10-08 15:44

klinz

weet van NIETS


  • whoami
  • Registratie: December 2000
  • Nu online
En wat wil je daar mee zeggen?
Het is perfect toegestaan om op verschillende forums (GoT, Fok, etc...) hetzelfde probleem te posten hoor.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Zeur Piet :r

modbreak: dat de reactie van Klinz niet zo netjes is okee, dit is ook wel een overdreven reactie. pas op met smilies als :r, :Z, :O e.d. waar mensen aanstoot aan kunnen nemen

[ Voor 32% gewijzigd door curry684 op 22-06-2003 21:45 ]


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 01:25

Tomatoman

Fulltime prutser

Verwijderd schreef op 22 June 2003 @ 16:55:
code:
1
2
3
4
5
6
  i := 0;
  while i < aantalTaken do
  begin
    ...
    i := i + 1;
  end;
Misschien eens in je leerboeken opzoeken wat een for-loop doet?

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
tomatoman schreef op 23 juni 2003 @ 00:00:
[...]
Misschien eens in je leerboeken opzoeken wat een for-loop doet?
T is slechts een gekopieerd lusje vanuit een gedeelte waar het op te tellen getal variabel is!

Je hoeft mij niet te dirigeren wat een for loop is, want dat weet ik wel hoor!

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 01:25

Tomatoman

Fulltime prutser

Waarom doe je het dan zo omslachtig?

Een goede grap mag vrienden kosten.

Pagina: 1