| Autor |
Beitrag |
Darkheart
Hält's aus hier
Beiträge: 13
|
Verfasst: Sa 01.03.03 02:01
Ich bin mir sicher, dieses Thema gehört zum Grundverständnis der seriösen Delphiprogrammierung und wurde wahrscheinlich auch schon mehrfach angesprochen, aber kann mir jemand mal ein gutes Tutorial geben, in dem gezeigt wird, wie man einzelne Komponenten in anderen Komponenten zeichnet z.B. eine ListView mit Editfeldern anstatt der normalen Einträge? Ich weiß bloß, daß hier die Fensterprozedur der jeweiligen Komponente "umgebogen" werden muß, aber nicht, wie man das macht.
Danke schon mal vorab.
Gruß
Darkheart
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 01.03.03 05:35
Ich würde es erst mal mit SetParent probieren.
|
|
Darkheart 
Hält's aus hier
Beiträge: 13
|
Verfasst: Sa 01.03.03 15:15
Hallo Luckie,
wie soll das gehen? Ne ListView hat doch Zeilen mit entsprechenden Einträgen/Daten etc. Anstatt dieser Einträge will ich nun Editfelder innerhalb der Listview anzeigen lassen. Soweit ich weiß, haut das mit SetParent nicht so ganz hin. Außerdem brauch ich das nicht nur für die ListView, deshalb will ich ja ein Tutorial haben, daß mir generell zeigt, wie ich sowas mache. Ein weiteres Beispiel wäre z.B. ne Combo mit integrierten Editfeldern als Einträge.
Gruß
Darkheart
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 01.03.03 18:00
Dann mußt du eben für jede Spalte, jeden Zeile, also für jede Zelle, ein Edit erzeugen und entsprechend plazieren. Was allerding der allergrößte Blödsinn wäre.
Die Caption der Items eines Listviews, kann man übrigens editiern.
Und sorry, dass ich nicht gleich ein fünfseitiges Tutorial geliefert habe, sondern NUR einen möglich Lösungsansatz aufgezeigt habe. Ich werde versuchen mich zu bessern. 
|
|
Darkheart 
Hält's aus hier
Beiträge: 13
|
Verfasst: Sa 01.03.03 19:56
| Zitat: | | Und sorry, dass ich nicht gleich ein fünfseitiges Tutorial geliefert habe, sondern NUR einen möglich Lösungsansatz aufgezeigt habe. Ich werde versuchen mich zu bessern. |
Sorry, daß ich nochmal nachgefragt habe !!!  Sollte doch nicht heissen, daß ich sowas von Dir erwarte. Ich dachte ja nur, es weiß jemand solch ein Tutorial. Bin mit Sicherheit nicht der einzige, der sowas wissen möchte. Außerdem ist die ListView nicht die einzige Komponente, die ich auf diese Art erweitern möchte.
Aber BTW: Wie plazierst Du das Editfeld? Über die entsprechende Methode mit Canvas und Rect während der eigentliche Eintrag gezeichnet wird?
Gruß
Udo[/b][/quote]
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 01.03.03 20:01
|
|
Darkheart 
Hält's aus hier
Beiträge: 13
|
Verfasst: Sa 01.03.03 21:35
Hmm, ich werds mal versuchen. Allerdings weiß ich nicht, wie das z.B. bei der Combo gehen soll. Bindest Du die entsprechende Routine im zugehörigen Ereignis für die Parent-Komponente ein, so daß anstelle des eigentlichen Eintrags das Editfeld erzeugt wird?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 01.03.03 21:41
Na ja. Mit einer Kombobox wird es schon schwieriger, wenn nicht gar unmöglich.
Aber sag mal, was soll das ganze denn eigentlich? Also dieses Rumgefusche an den Standardkomponenten? Ich glaube nicht, dass das ganze sehr bedienfreundlich wird.
Oder anderst gefragt: Was hast du eigentlich wirklich vor?
|
|
Darkheart 
Hält's aus hier
Beiträge: 13
|
Verfasst: Sa 01.03.03 22:41
O.K., ich will ne Mp3-Verwaltung programmieren. In dieser Verwaltung solls unter anderem auch ne Suchfunktion geben. Der Hauptbestandteil des Suchfensters ist ein TreeView, den ich gern entsprechend auf diese Art erweitert hätte. Sprich die einzelnen Nodes sollen nicht nur Text enthalten, sondern eben Editfelder (teilweise auch zwei Edits und zwei Labels in einer Zeile), Comboboxen und Memos um die einzelnen Optionen darzustellen (Suchtext, Dateiendungen etc.). Desweiteren brauch ich auch ne Compobox im XP-Style mit Checkboxes. Microsoft nutzt solche Komponenten z.B. in den Suchfunktionen von Wort, Excel und so weiter. Und da ich solche erweiterten Komponenten noch nicht im Netz gefunden habe, bleibt mir wohl nix anderes übrig, als sie selber zu programmieren.
|
|
FD-83
      
Beiträge: 49
|
Verfasst: So 02.03.03 00:57
Also, du benutzt das OnDrawItem und/oder das OnDrawSubItem Ereignis.
In dieser Prozedur, kannst du jetzt deine ListItems "selber" zeichnen. Wenn du statt Text ein Steuerelenemt (Button, Editbox, ComboxBox, usw) haben möchtest, dann Zeichnest du einfach nichts sondern erstellst eine neue EditBox (oder was auch immer) und weist dieser mit SetBounds() das Rechteck des Items/SubItems zu!
Du kannst eine EditBox nicht "zeichnen"! Denn dann würde man den Text nicht editieren können! Du musst ein Steuerleement einfach in das ListView einpassen...
Gruss Frederik
|
|
Darkheart 
Hält's aus hier
Beiträge: 13
|
Verfasst: So 02.03.03 01:17
Aha  Muß ich dabei noch irgendwas beachten, oder funktioniert das so einfach? Ich hatte mal ein Beispiel gesehn, da wurde auch mit der Fensterprozedur des Parents rumgespielt.
Brauch ich das oder funktionierts auch so?
Gruss + Danke
Udo
|
|
FD-83
      
Beiträge: 49
|
Verfasst: So 02.03.03 13:53
Mag sein, es gibt sicher andere (vllt. auch bessere) Lösungen. Aber wie ichs geschrieben habe geht es auf jeden Fall und du musst auch nicht an den Standard Koponenten rumbasteln...
Du musst in der OnDrawItem prozedur halt einfach nur das Rechteck herausfinden in das die Das edit Feld Einpassen musst... Und du musst dir natülich merken welches edit zu welchem ListItem gehört.
Gruss Frederik
|
|
Darkheart 
Hält's aus hier
Beiträge: 13
|
Verfasst: So 02.03.03 14:45
O.K.! Ich werde so machen. Danke Dir auf alle Fälle.
Gruß
Udo
|
|