Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Listbox, bei Überschrift-klick kommt ausführlicher Bericht (https://www.delphipraxis.net/145154-listbox-bei-ueberschrift-klick-kommt-ausfuehrlicher-bericht.html)

kingsusu 24. Dez 2009 23:10


Listbox, bei Überschrift-klick kommt ausführlicher Bericht
 
Guten Abend Leute,

zur späten Stunde habe ich noch eine Frage.

Ich habe eine Listbox wie hier: http://www.youtube.com/watch?v=K1hEugkOrxc

Der einzige unterschied ist, dass ich noch ein weiteres EDIT-FELD habe, wo ich eine ausführliche Beschreibung einer Sache schreibe.

Ich will, dass es in der Listbox nur die "Überschrift" die ich in Edit1 eingebe sichtbar ist, aber wenn ich es anwähle will ich,dass ich die genaue Beschreibung sehe.

Wie kann ich das machen?

lg

Kingsusu

Edit:

Crosslink: http://www.delphi-forum.de/viewtopic...=589327#589327

Luckie 24. Dez 2009 23:20

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Guck dir mal die Methode von Items Delphi-Referenz durchsuchenAddObject an.

Matze 24. Dez 2009 23:21

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Kingsusu,

Soll sich der Text des Eintrags ändern, wenn du ihn anklickst? Habe ich das richtig verstanden?
Für dein Vorhaben würde ich eher zu einem TreeView tendieren. Das ist das, was der Windows-Explorer nutzt, um die Verzeichnisse anzuzeigen.
Da kannst du die Überschriften darstellen und wenn man auf das zugehörige Plus-Zeichen klickt, klappt der Beschreibungstext auf.

Edit: Bild angehängt.

kingsusu 24. Dez 2009 23:25

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Zitat:

Zitat von Matze
Hallo Kingsusu,

Soll sich der Text des Eintrags ändern, wenn du ihn anklickst? Habe ich das richtig verstanden?
Für dein Vorhaben würde ich eher zu einem TreeView tendieren. Das ist das, was der Windows-Explorer nutzt, um die Verzeichnisse anzuzeigen.
Da kannst du die Überschriften darstellen und wenn man auf das zugehörige Plus-Zeichen klickt, klappt der Beschreibungstext auf.

Edit: Bild angehängt.

Diese Methode gefällt mir!

Mein Ziel ist es, dass ich einen Terminkalender mache.
Ich habe Listbox mit einer "Überschrift" , wenn man diese anklickt sieht man die genaue Beschreibung des Termins und die ausgewählte Zeit.

Und wenn diese ausgewählte Zeit eintrifft, dann kommt ein lauter Alarm! :)


Ist es mit deiner Methode einfach? (Bin neu hier :-) ) Oder gibts da was leichteres?

lg

Blackheart 25. Dez 2009 09:11

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Wie schon in einem anderen Post erwähnt gib bitte den Crosspost mit an.

Matze 25. Dez 2009 09:53

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Am Besten erstellst du erst Crossposts, wenn in einem Thema nach 12 Stunden noch keine Antwort da ist. Da vergeht mir komplett die Lust zu helfen, daher halte ich mich nun auch sehr kurz. :?

Delphi-Quellcode:
// Hinzufügen von Terminen
procedure AddEvent(EventName: string; EventDescription: string; TView: TTreeView);
var
  TreeNode: TTreeNode;
begin
  TreeNode := TView.Items.AddFirst(nil, EventName);
  TView.Items.AddChild(TreeNode, EventDescription);

  // oder als (etwas unübersichtlicher) 1-Zeiler:
  // TView.Items.AddChild(TView.Items.AddFirst(nil, EventName), EventDescription);
end;

// Möglicher Aufruf
procedure TForm1.Button1Click(Sender: TObject);
begin
  AddEvent('Termin 1', 'Kaktus gießen, bevor er vertrocknet *g*', TreeView1);
end;
Es wäre dann sinnvoll, im DF Bescheid zu geben, dass das Problem geklärt ist. Sonst rackern sich dort auch welche ab und tippseln Code, obwohl alles bereits geklärt ist.
Tutorials zum TTreeView gibt's übrigens viele. Da erfährst du dann auch, wie du Items löschen kannst o.ä.

kingsusu 25. Dez 2009 10:26

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Oh sorry, wieder vergessen mit dem Crosslink :wall: - bins noch nicht gewöhnt.

Aber danke für die Antworten.

Wäre es also auch möglich das hier zu machen?
Delphi-Quellcode:
// Möglicher Aufruf
procedure TForm1.Button1Click(Sender: TObject);
begin
  AddEvent(edit1.text, edit2.text, TreeView1);
end;
Und mein Edit1 ist die Überschrift und Edit2 die Beschreibung.

Matze 25. Dez 2009 10:27

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Natürlich.

Und lass die Crossposts am Besten komplett sein. Mit oder ohne Link, ich persönlich schreibe in diesen Themen aus Prinzip schon selten.

kingsusu 25. Dez 2009 12:08

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Kann ich dann auch eine Zeit und ein Datum einbinden?

Die Zeit erstelle ich mit einem Timerpicker und das Datum mit einem Datepicker.

kingsusu 25. Dez 2009 23:00

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Liste der Anhänge anzeigen (Anzahl: 1)
So ich benutze nun den Treeview. - hier ein Dankeschön an Matze.

Und eine IniDatei.

Hier der Code



Delphi-Quellcode:

procedure AddEvent(EventName: string; EventDescription: string; TView: TTreeView);
var
  TreeNode: TTreeNode;
begin
  TreeNode := TView.Items.AddFirst(nil, EventName);
  TView.Items.AddChild(TreeNode, EventDescription);

end;

Und für das lesen habe ich

Delphi-Quellcode:

procedure TFRemember.Button2Click(Sender: TObject);

var filename, beschreibung:string;
begin

filename := Extractfilepath (application.ExeName) + 'test.ini';
if fileexists(filename) then

AddEvent(readfromini (filename, 'Myvars', 'Überschrift'), readfromini (filename, 'Myvars', 'Beschreibung'),TreeView1);
Beschreibung := readfromini(filename, 'Myvars', 'Beschreibung') + ' (' + readfromini(filename, 'Myvars', 'Zeit') + ')';
end;
klappt alles super, bis auf die zeit, die ich nicht lesen kann. Diese Zeit kann ich aber in einer Listbox anzeigen lassen mit diesem Code.

Zur Veranschaulichung habe ich ein Bild hochgeladen, dieses ist aber ein bisschen unübersichtlich, da ich noch mitten drin bin. Das Blaue symbolisiert das was in der Treebox erscheinen muss.

Das rote das was in dem Listview erscheint


Das ist der Code, der für die Zeit zuständig ist.


Delphi-Quellcode:

   listbox1.items[listbox1.ItemIndex]:=readfromini (filename, 'Myvars', 'Zeit');

Und jetzt zu meiner Frage: Wieso sehe ich dir Zeit beim Treeview nicht?

Matze 25. Dez 2009 23:07

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Du solltest versuchen zu verstehen was du da zusammen kopierst, sonst wirst du nie glücklich. Die Variable "Beschreibung" nutzt du in deinem Code nicht. Du weist ihr lediglich einen Wert zu, doch die Ausgabe fehlt.

Denkbar wäre so etwas:

Delphi-Quellcode:
Beschreibung := readfromini(filename, 'Myvars', 'Beschreibung') + ' (' + readfromini(filename, 'Myvars', 'Zeit') + ')';
AddEvent(readfromini(filename, 'Myvars', 'Überschrift'), Beschreibung, TreeView1);
Das sollte hinter die Beschreibung in Klammern eingeschlossen die Zeit anfügen.

Oder du machst es untereinander:

Delphi-Quellcode:
procedure AddEvent(EventName: string; EventDescription: string; EventDate: string; TView: TTreeView);
var
  TreeNode: TTreeNode;
begin
  TreeNode := TView.Items.AddFirst(nil, EventName);
  TView.Items.AddChild(TreeNode, EventDescription);
  TView.Items.AddChild(TreeNode, EventDate);
end;
Wie man das aufrufst, kriegst du selbst heraus.

Grüße, Matze

kingsusu 25. Dez 2009 23:36

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Super klappt alles wunderbar.

Delphi-Quellcode:

procedure TFRemember.Button2Click(Sender: TObject);

var filename, beschreibung:string;
begin

filename := Extractfilepath (application.ExeName) + 'test.ini';
if fileexists(filename) then

    Beschreibung := readfromini(filename, 'Myvars', 'Beschreibung') + ' (' + readfromini(filename, 'Myvars', 'Zeit') + ')'+' (' + readfromini(filename, 'Myvars', 'Datum') + ')';
    AddEvent(readfromini(filename, 'Myvars', 'Überschrift'), Beschreibung, TreeView1);
Dieser Code ist nun richtig. Als Zusatz zeige ich noch das Datum an.

Code für Datum.

Delphi-Quellcode:
 WriteToIni (Filename,'Myvars','Datum',DateToStr(pickerdatum.date));

Danke für die Hilfe Leute! :) :hello: :party:

[edit=Matze][delphi]-Tags repariert. MfG, Matze[/edit]

Matze 26. Dez 2009 10:05

Re: Listbox, bei Überschrift-klick kommt ausführlicher Beric
 
Zitat:

Zitat von kingsusu
Delphi-Quellcode:
procedure TFRemember.Button2Click(Sender: TObject);

var filename, beschreibung:string;
begin

filename := Extractfilepath (application.ExeName) + 'test.ini';
if fileexists(filename) then

    Beschreibung := readfromini(filename, 'Myvars', 'Beschreibung') + ' (' + readfromini(filename, 'Myvars', 'Zeit') + ')'+' (' + readfromini(filename, 'Myvars', 'Datum') + ')';
    AddEvent(readfromini(filename, 'Myvars', 'Überschrift'), Beschreibung, TreeView1);

Zwei Kleinigkeiten dazu:

Den Dateinamen musst du nicht bei jedem Buttonklick auslesen, da er sich nicht ändert. Aber die paar Millisekunden, die das benötigt sind nicht tragisch. ;)

Wenn die Datei nicht existiert, wird bei dir "AddEvent()" dennoch aufgerufen, da dein Code aktuell so interpretiert wird:

Delphi-Quellcode:
if FileExists(filename) then
begin
  Beschreibung := readfromini(filename, 'Myvars', 'Beschreibung') + ' (' + readfromini(filename, 'Myvars', 'Zeit') + ')'+' (' + readfromini(filename, 'Myvars', 'Datum') + ')';
end;
AddEvent(readfromini(filename, 'Myvars', 'Überschrift'), Beschreibung, TreeView1);
Das ist natürlich nicht korrekt. Bei dir muss es so aussehen:

Delphi-Quellcode:
if FileExists(filename) then
begin
  Beschreibung := readfromini(filename, 'Myvars', 'Beschreibung') + ' (' + readfromini(filename, 'Myvars', 'Zeit') + ')'+' (' + readfromini(filename, 'Myvars', 'Datum') + ')';
  AddEvent(readfromini(filename, 'Myvars', 'Überschrift'), Beschreibung, TreeView1);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz