Delphi-PRAXiS
Seite 1 von 3  1 23      

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 listbox und fensterwechsel (https://www.delphipraxis.net/86184-listbox-und-fensterwechsel.html)

JannyR 10. Feb 2007 15:51


listbox und fensterwechsel
 
Moin,

hab mit Delphi 2005 schon nen kleines Tool gebastelt (DL).

Das Design ist aber nicht wirklich gelungen jetzt will ich das ganze in ein Design umändern was ungfähr so aussehen soll:

http://www.250kb.de/u/070210/j/4a3739a4.jpg

Und zwar soll wenn jemand auf einen Eintrag in der listbox klickt sich jedesmal das bild und der Text ändern. Das gleiche mit dem mainmenü, da soll denn eine neue listbox erscheinen mit anderen Einträgen.

Für Hilfe wäre ich dankbar.

marabu 10. Feb 2007 17:23

Re: listbox und fensterwechsel
 
Herzlich willkommen in der Delphi-PRAXiS, JannyR.

Den Code zum Auswechseln von Text und Bild kannst du an das Ereignis OnChange der ListBox hängen. Eine neue ListBox brauchst du nicht, wenn die Menüeinträge angeklickt werden. Es genügt, wenn du die alten Items der ListBox löschst und die neuen hinzufügst.

Freundliche Grüße vom marabu

JannyR 10. Feb 2007 17:57

Re: listbox und fensterwechsel
 
Erstmal danke für die Anrwort.

Habe da das eine oder andere Problem.

Bei TListBox habe ich kein OnChange.
Und wenn ichs hätte wüsste ich nicht was ich eingeben müsste^^.

Also um das Bild zu wechseln denk ich mal brauch ich ein TImage und TImageList, was aber für den Text (mach ich mit TLabel)?


Und mit dem Menü mach ich meist so dass ich form,showmodal; mache, aber ich will dass es im selben Fenster öffnet und nicht seperat öffnet.

DGL-luke 10. Feb 2007 18:00

Re: listbox und fensterwechsel
 
@marabu: Du meinst OnClick :)

Den Text kannst du mit TLabel machen, indem du AutoSize auf false und Wordwarap auf true stellst.

JannyR 10. Feb 2007 18:07

Re: listbox und fensterwechsel
 
Zitat:

Zitat von DGL-luke
Den Text kannst du mit TLabel machen, indem du AutoSize auf false und Wordwarap auf true stellst.


Ahh das war schonmal sehr hilfreich! Ich hab sonst immer für jede Zeile ein extra TLabel gemacht.


Jetzt wäre es noch super wenn mir jmd mit der Wechselsache helfen könnte.

Nils_13 10. Feb 2007 18:13

Re: listbox und fensterwechsel
 
Hi,

du kannst je nach Delphi-Version übrigens neben Caption bei einem Label auf ... klicken, dann kannst du auch ganz leicht Zeilenumbruche einbauen.

DGL-luke 10. Feb 2007 18:17

Re: listbox und fensterwechsel
 
Delphi-Quellcode:
type
  TDataRecord = record
    Image: string;
    Text: string;
  end;

var
  Data: array of TDataRecord;

procedure TForm1.Listbox1CLick(Sender: TObject);
begin
  if Listbox1.ItemIndex > -1 then //wenn nichts ausgewählt ist, kannst du nicht laden
  begin
    Image1.Bitmap.LoadFromFile(Data[Listbox1.ItemIndex].Image);
    Label1.Caption := Data[Listbox1.ItemIndex].Text;
  end;
end;
Dabei ist jetzt noch nicht eingerechnet, dass du ja zusätzlich noch ein Menü haben willst.

JannyR 10. Feb 2007 18:39

Re: listbox und fensterwechsel
 
Code:
[Fehler] test.pas(33): E2029 Anweisung erwartet, aber 'TYPE' gefunden
[Fehler] test.pas(42): E2029 ';' erwartet, aber '.' gefunden
[Fehler] test.pas(44): E2003 Undefinierter Bezeichner: 'Listbox1'
[Fehler] test.pas(46): E2003 Undefinierter Bezeichner: 'Image1'
[Fehler] test.pas(46): E2003 Undefinierter Bezeichner: 'LoadFromFile'
[Fehler] test.pas(46): E2029 ']' erwartet, aber Bezeichner 'ItemIndex' gefunden
[Fehler] test.pas(49): E2029 '.' erwartet, aber ';' gefunden
[Warnung] test.pas(50): W1011 Text hinter dem abschließenden 'END.' wird vom Compiler ignoriert
[Fataler Fehler] Project2.dpr(5): F2063 Verwendete Unit 'test.pas' kann nicht compiliert werden
Wäre nett wenn du es mir ein bissl genauer erklären könntest^^

DGL-luke 10. Feb 2007 18:47

Re: listbox und fensterwechsel
 
OK.

der Absatz nach "type" ist eine typendeklaration. Ich deklariere da ein Delphi-Referenz durchsuchenrecord, das aus zwei strings besteht.
Das ganze muss in den interface-abschnitt deiner delphi-unit - am besten nach das type, hinter dem deine Form deklariert wird ("type TForm1= ....").

das hinter dem var, eine array, das heißt aneinanderrehiung vieler records, sollte am besten dahin, wo bei deiner form-deklaration "Private-deklarationen" steht.
irgendwo musst du den array (und die listbox) auch füllen - z.B. mit Ini-Dateien (Delphi-Referenz durchsuchenTIniFile). dafür wirst du die FUnktion Delphi-Referenz durchsuchenSetLength brauchen.

Das letzte, die procedure, ist das Event - einfach in den formdesigner gehen, die listbox anklicken, im Objektinspektor (F11) auf "Ereignisse" und in das feld hinter "OnClick" doppelklicken. dann den code einfüllen.

das sollts gewesen sein... und wie gesagt, für "mehrere listboxen" musst du das ganze noch einmal "verpacken" (z.B. in dem du aus dem array of TDaten ein array of array of TDaten machst).

JannyR 10. Feb 2007 19:05

Re: listbox und fensterwechsel
 
Ziemlich viel Input^^

Könntest du mir bitte ein kleines Beispiel-Projekt schicken?
2 oder 3 Eintäge müssten reichen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.
Seite 1 von 3  1 23      

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-2025 by Thomas Breitkreuz