![]() |
listbox und fensterwechsel
Moin,
hab mit Delphi 2005 schon nen kleines Tool gebastelt ( ![]() Das Design ist aber nicht wirklich gelungen jetzt will ich das ganze in ein Design umändern was ungfähr so aussehen soll: ![]() 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. |
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 |
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. |
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. |
Re: listbox und fensterwechsel
Zitat:
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. |
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. |
Re: listbox und fensterwechsel
Delphi-Quellcode:
Dabei ist jetzt noch nicht eingerechnet, dass du ja zusätzlich noch ein Menü haben willst.
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; |
Re: listbox und fensterwechsel
Code:
Wäre nett wenn du es mir ein bissl genauer erklären könntest^^
[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 |
Re: listbox und fensterwechsel
OK.
der Absatz nach "type" ist eine typendeklaration. Ich deklariere da ein ![]() 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 ( ![]() ![]() 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). |
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. |
Re: listbox und fensterwechsel
Liste der Anhänge anzeigen (Anzahl: 1)
Da isses.
|
Re: listbox und fensterwechsel
Erstmal großes DANKE!
Aber wenn ich das Projekt öffne kommt folgende Meldung: ![]() |
Re: listbox und fensterwechsel
"Alle Ignorieren" klicken ;) Die eigenschaft ist eigentlich nicht überlebenswichtig (Also bei meinem Projekten funzts dannach ganauso gut)
|
Re: listbox und fensterwechsel
Leider gehts nicht wenn ich auf ignorieren klcke. kommt immer folgende meldung:
![]() ![]() |
Re: listbox und fensterwechsel
Liste der Anhänge anzeigen (Anzahl: 1)
Mist, das ist alter Code :wall:
Einfach den angehängten stattdessen nehmen! EDIT: Würd aber auch reichen, einfach GraphicEx und PNGImage rauszunehmen und stattdessen JPEG einzufügen. Im angehängten Code ist aus Gründen der Dateigröße die SysUtils-Unit rausgenommen und damit auch zwei Codestellen etwas unsicherer geworden (Einfach mal vergleichen ;-)). |
Re: listbox und fensterwechsel
Hab noch nen paar Fragen:wink: :
1. Wie kann ich den Text formatieren? Mit Absatz und Fett etc damit das später so ähnlich aussieht: ![]() 2. Wie ändere ich oben die Bezeichnungen 0-2? 3. Wie mache ich dass er bei der 0 startet? |
Re: listbox und fensterwechsel
Über Font kannst du die Schrift ändern.
Delphi-Quellcode:
label1.Font.Style:= [fsBold];
|
Re: listbox und fensterwechsel
Wie man die Schrift etc für das ganze label ändert weiß ich, aber ich habe nur ein label zur verfügung in der ich den text verschieden formatieren will.
|
Re: listbox und fensterwechsel
Für den Formatierten Text kannt du ja z.B. ein TMemo nehmen.
Delphi-Quellcode:
und für "Beschreibung:", "Angriff:" usw. ebend Labels. Ansonsten kannst du dir ja noch die Komponente RichEdit ansehen, fallst du noch farbigen Text haben willst.
Memo1.BorderStyle:= bsNone;
Memo1.Color:= Color; Memo1.Text:= 'Der Devil Yedi....'; |
Re: listbox und fensterwechsel
Ich hab ja nur ein Label zur Verfügung. DGL-luke ein mir nen Beispiel Projekt gemacht und darin ist für den Text nur 1 Label da. Und eich weiß nicht wie ich ein weiteres Label mit einbinden kann.
|
Re: listbox und fensterwechsel
Du must in die Tool-Pallete auf TLabel klicken und dann auf die Form setzen, genauso mit TMemo.
|
Re: listbox und fensterwechsel
Wie man ein Objekt erstellt weiß ich...
Aber wie es mit eingebunden wird halt nicht, les dir mal den rest des Threads durch. Ich glaube du weißt nicht genau worum es geht... |
Re: listbox und fensterwechsel
Hai JannyR,
sei doch bitte so nett und hänge Bilder als Anhang an dein Posting. Zum einen kann es für Modem Benutzer recht lange dauern bis eine Seite geladen wird und zum anderen sind die Bilder auch dann noch vorhanden wenn sie nicht mehr auf dem von Dir verwendeten WEB-Space liegen. Danke :-D |
Re: listbox und fensterwechsel
Zitat:
Ich hätte es folgenermasen gemacht (Wenn du etwas nicht verstehst nachfragen!): Zuerst hast du ein array-record in dem die Daten stehen:
Delphi-Quellcode:
Und dann kannst du in ein array schreiben:
type
TData = record description, attack, quests : string; hitPoints : Integer; end;
Delphi-Quellcode:
Nun muss du dass array mit Daten füllen. Wenn du das gemacht hast, dann kannst du in der Listbox das OnClick nehmen, und dann entsprechend die Labels auffüllen.
private
datas : array of TData; Und zu wissen, welches Item des Array man nehmen muss, kannst du die Eigenschaft "ItemIndex" verwenden, welches dir das angeklickte Item verrät (bei 0 beginnend und -1 ist keine selektion)! Dies ist noch ohne Bild, aber ich denke, dass sollte jetzt nicht mehr so schwierig sein ... Ich habe noch eine Frage: Wie sind eigentlich die Daten gespeichert? In einer ini Datei o.s.ä.? Übrigens wirst du mit einem TLabel nicht weit mit verschiedenen Formatierungen kommen. Wenn du möchstest, kann ich dir mal eine Demo anhängen! |
Re: listbox und fensterwechsel
Also die Bilder sind im res Ordner gespeichert und Texte sind direkt im Code geschrieben.
Für ein weiteres Beispiel wäre ich sehr dankbar. |
Re: listbox und fensterwechsel
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich hab das Quick&Dirty in 30 Minuten gemacht. Es gibt aber die sehr einfache Möglichkeit, anstelle des TLabels eine Komponente reinzupacken, die RichTextFormat bzw. HTML versteht. Für Richtext gibts das "TRichEdit", das bei Delphi mitgeliefert wird. Ich habs dir nochmal angehängt, einfach über das alte drüberschreiben(die dfm und die pas ersetzen, das rtf zusätzlich in den Ordner). @xZise: Nix da Demo, Demo ich! :zwinker: PS: Hier mal die "Datenbank" xD:
Delphi-Quellcode:
var Form2: TForm2; const entries: array[0..2] of array[0..2] of array[0..2] of string = (( ('Bild1', '1.rtf', '1.jpg'), ('Bild2', '1.rtf', '1_reduced_faceonly_3cols.jpg'), ('Bild3', '1.rtf', '1_cropped.jpg') ), ( ('Bild4','1.rtf','1_reduced_faceonly_3cols_2_small.jpg'), ('Bild5','1.rtf','1_reduced_faceonly_3cols_172.bmp'), ('Bild6','1.rtf','1_reduced.jpg') ), ( ('Bild1', '1.rtf', '1.jpg'), ('Bild2', '1.rtf', '1_reduced_faceonly_3cols.jpg'), ('Bild3', '1.rtf', '1_cropped.jpg') )); |
Re: listbox und fensterwechsel
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anhang ist eine Beispieldemo :P (auch für Luke ggf. interessant xD) |
Re: listbox und fensterwechsel
Vielen Dank DGL-luke! Das ist genau das was ich brauche!
Aber ich hab wie immer noch nen paar Fragen, und zwar: 1. Wie kann ich die Einträge im Menü ändern? (0,1,2) 2. Ist es möglich den res Ordner später irgendwie in einer Datei zu verpacken, damit nicht jeder einfach die Dateien im Ordner anguckt? |
Re: listbox und fensterwechsel
Zitat:
bitte mache, so wie es in unseren "Regeln" steht, für jede Frage einen eingenen Thread auf. Danke. Da Deine ursrpüngliche Frage wohl beantwortet ist mache ich diesen Thread mal zu. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 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-2025 by Thomas Breitkreuz