Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Scrollbox: Drei komponenten zur laufzeit hinzufügen ? (https://www.delphipraxis.net/52812-scrollbox-drei-komponenten-zur-laufzeit-hinzufuegen.html)

mimi 4. Sep 2005 16:52


Scrollbox: Drei komponenten zur laufzeit hinzufügen ?
 
Hallo,
ich möchte aus einer Text Datei drei Komponenten zur laufzeit hinzufügen die Datei sieht so aus:
Zitat:

Autor,EMail,Hompage,
Autor2,EMail2,Hompage2,
dazu habe ich folgenden qullcode geschrieben:
Delphi-Quellcode:
procedure TForm2.LoadInfo;
var
  Daten:TStringList;
  i:Integer;
  bf:TBevel;
  hl,hl2:TJvHotLink;
  hp,email:String;
begin
  Daten:=TStringList.Create;
  Daten.LoadFromFile(GetExeDir + 'infoList.txt');
  for i:=0 to Daten.Count-1 do begin
    hl:=TJvHotLink.Create(Form2); // HP
    hl.Parent:=ScrollBox1;
    hl.Caption:='Hompage von: ' + GetToken(Daten.Strings[i],',',1);
    hl.Url:=GetToken(Daten.Strings[i],',',3);
    hl.AutoSize:=False;
    hl.Left:=5;
    hl.Top:=5+(i*13);
    hl.Width:=253;
    hl.Height:=13;
    hl.Visible:=True;

    hl2:=TJvHotLink.Create(Form2); // E-Mail
    hl2.Parent:=ScrollBox1;
    hl2.AutoSize:=False;
    hl2.Caption:='E-Mail von: '+ GetToken(Daten.Strings[i],',',1);
    hl2.Url:=GetToken(Daten.Strings[i],',',2);
    hl2.Left:=5;
    hl2.Top:=hl.Top+15;
    hl2.Width:=253;
    hl2.Height:=13;
    hl2.Visible:=True;

    bf:=TBevel.Create(Form2);
    bf.Parent:=ScrollBox1;
    bf.Left:=5;
    bf.Top:=hl2.Top+15;
    bf.Width:=253;
    bf.Height:=9;
    bf.Shape:=bsTopLine;
    bf.Visible:=true;
    ShowmEssage(Daten.Strings[i]);
//    FreeAndNil(hl2); FreeAndNil(hl); FreeAndNil(bf);
  end;
end;
Der Fehler ist folgender jetzt:
es sollen drei komponenten(bf:TBevel; hl,hl2:TJvHotLink)
hinzugeüfgt werden. und dies 2 mal das heißt bei zwei einträgen in der Textdatei müste ich 6 komponenten haben das habe ich nicht, ich habe nur 5 weil beim ersten durchgang wird aus irgeneinen grund die e-mail komponente nicht hinzugefügt. das sieht dann so aus:
Zitat:

Hompoage von: Autor
Hompoage von: Autor2
E-Mail von: Autor2
--------------------------
aber es sollte so ausehen:
Zitat:

Hompoage von: Autor
E-Mail von: Autor
--------------------------
Hompoage von: Autor2
E-Mail von: Autor2
--------------------------


omata 4. Sep 2005 19:23

Re: Scrollbox: Drei komponenten zur laufzeit hinzufügen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,

ich habe keine Ahnung was da nicht geht. Allerdings ist mir das so auch viel zu unübersichtlich programmiert und nicht leicht erweiterbar.
Du solltest dir mal Frames ansehen, damit kann man soetwas viel eleganter lösen.

Ich habe mal ein Beispiel angehängt, hoffe es hilft dir...

MfG
Thorsten

mimi 7. Sep 2005 13:57

Re: Scrollbox: Drei komponenten zur laufzeit hinzufügen ?
 
Vielen dank, werde ich mir mal ansheen.
Ich hatte mit Frams erst einmal was versucht und das ging nicht, weil die ereignise nicht ausgelöst wurden abwohl sie zugewiesen waren !

mimi 7. Sep 2005 14:09

Re: Scrollbox: Drei komponenten zur laufzeit hinzufügen ?
 
vielen Dank.
ich habe das beispiel angepasst und es geht so wie ich es haben möchte *FREU**FREU*

mimi 7. Sep 2005 18:13

Re: Scrollbox: Drei komponenten zur laufzeit hinzufügen ?
 
Geht leider doch nicht so wie ich es mir vorgestellt hatte: wie bei meinem ersten verusch: ereignisse werden nicht ausgeführt :(
ich habe ein label und zwei TJvHotLink genommen und es wird nichts gestartet obwohl es in einem normalen formual funtkioniert... woran lieg das ?

omata 7. Sep 2005 20:46

Re: Scrollbox: Drei komponenten zur laufzeit hinzufügen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe nochmal ein Beispiel angehängt (mit Ereignis)

Dieses Problem, mit den Ereignissen, hatte ich auch schon öfter.
Meine Vorgehensweise ist dann immer folgende:

In dem Formular, indem der Frame eingebunden wird klickst du auf z.B. einen Button, dann wird die Ereignisprozedur angelegt. Dort steht dann inherited... drin. Diese Deklaration der Ereignisse ist natürlich sehr unschön. Deshalb löscht du dann einfach wieder die inherited-Zeile.
Dann sollte wieder die Ereignisroutine im Frame benutzt werden. Und das ist dann das was du ja eigentlich haben möchtest. Warum das manchmal passiert weiss ich leider nicht.

MfG
Thorsten

mimi 7. Sep 2005 23:21

Re: Scrollbox: Drei komponenten zur laufzeit hinzufügen ?
 
ich habe herrausgefunden, wenn ich bei den frams das ereignis fokuscontrol zuweise geht zwar die ereignise aber die besagte komponenten geht immer noch nicht.
Das was im Beispiel gezeigt wurde habe ich auch hinbekomme, aber die komponenten von den JVCL die auf ein TForm funktioniert und bei einem Fram nicht. geht immer noch nicht...evtl. weiß ja ein andre eine lösung.
aber vielen dank mit dem TIP Frame... nur schade das es einen hacken hat. evlt geht es auch auf meine weise, wenn mir da nochmal jeammd ein tip geben kann...

mimi 10. Sep 2005 17:06

Re: Scrollbox: Drei komponenten zur laufzeit hinzufügen ?
 
weiß keiner eine lösung ?
ich möchte "einfach nur" 4 komponenten nacheinander erzeugen und das in einer forschleife.....

was mache ich in den oben gezeigten code falsch ???


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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 by Thomas Breitkreuz