| Autor |
Beitrag |
Bofrost_Mann
Hält's aus hier
Beiträge: 15
Win XP
Delphi 5, Delphi 2005
|
Verfasst: Sa 18.07.09 11:32
Folgendes Problem:
Es soll eine Art tabellarische Liste angezeigt werden, mit folgenden Elementen:
Haken für dis/enabled, Programmpfad, Zeit bis Start.
Dabei soll Programmpfad vom Benutzer nicht direkt in der Liste veränderbar sein, dis/enabled und Zeit aber schon.
Desweiteren soll über Buttons folgendes ermöglicht werden:
Hinzufügen: eine neue Zeile nach obigem Schema hinzufügen
Entfernen: eine gewählte Zeile entfernen
Nach oben: eine Zeile in der Liste eine Position nach oben verschieben
Nach unten: analog.
Es ist zu keinem Zeitpunkt bekannt, wie viele solcher Zeilen vom Benutzer hinzugefügt werden.
Ideen oder Vorschläge? - Danke
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 18.07.09 11:46
Was ist nun konkret deine Frage? TVirtualListview könnte dir aber helfen ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Sa 18.07.09 11:46
Hallo,
Standardkomponeneten: StringGrid, ListView, ich bevorzuge ersteres, ist flexibler.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
jaenicke
      
Beiträge: 19336
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 18.07.09 12:13
Lannes hat folgendes geschrieben : | | ListView, ich bevorzuge ersteres, ist flexibler. |
Flexibler?
Direkt alle Spalten editierbar, ja. Aber sonst...
Eine TListView sieht tausendmal besser aus, hat Sortiermöglichkeiten direkt drin, ...
Ich benutze aber auch die von BenBE genannte virtuelle Komponente, da die schon sehr sehr viel mehr Möglichkeiten bietet. Und sonst wäre eine normale TListView die sinnvollste Variante.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Sa 18.07.09 13:06
Hallo,
jaenicke hat folgendes geschrieben : | Lannes hat folgendes geschrieben : | | ListView, ich bevorzuge ersteres, ist flexibler. | Flexibler?
Direkt alle Spalten editierbar, ja. Aber sonst...
Eine TListView sieht tausendmal besser aus, hat Sortiermöglichkeiten direkt drin, ... |
Habe zu Anfang sehr viel mit der ListView gearbeitet, bin dann aber auf das StringGrid umgestiegen.
Die Gründe waren:
- OnDraw besser händelbar
- jede Zelle editierbar/oder halt nicht
- zu jede Zelle kann ein Object hinterlegt werden
- Zugriff auf einzelne Spalten(Rows[x])
- Komponente mit Daten zur Anzeige füllen ist einfacher, verschachtelte Schleife, fertig
etc.
Meine Grids sehen so aus wie ich es möchte/sie zeichne, Du wirst nicht erkennen können ob es eine ListView oder ein Grid ist.
Sortiermöglichkeit innerhalb der Komponente brauche ich nicht, es werden die Daten sortiert, das Ergebnis wird im Grid ausgegeben.
Die ListView nutze ich nur noch zur Dateianzeige, weil ich da die Systemicons direkt anbinden kann,
wobei ich die ListView da auch noch wegoptimieren könnte.
Ok, nutzt man TVirtualListview sieht die ganze Geschichte schon anders aus.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Bofrost_Mann 
Hält's aus hier
Beiträge: 15
Win XP
Delphi 5, Delphi 2005
|
Verfasst: Sa 18.07.09 17:30
Habe ich denn bei einer StringGrid die Möglichkeit Checkbuttons o.ä. in eine Spalte zu packen? - denn das Ganze mit 0en oder 1en zu machen ist optisch nicht sehr ansprechend ...
(Optional wäre auch eine Spalte mit DropdownBoxen machbar?)
|
|
Bofrost_Mann 
Hält's aus hier
Beiträge: 15
Win XP
Delphi 5, Delphi 2005
|
Verfasst: Sa 18.07.09 17:37
BenBE hat folgendes geschrieben : | | Was ist nun konkret deine Frage? TVirtualListview könnte dir aber helfen ... |
Um nochmal darauf zurückzukommen, sorry kommt im Post nicht rüber ...
Also ich suche eine Möglichkeit mein obiges Problem optisch ansprechend umzusetzen, es aber gleichzeitig auch leicht handhabbar zu halten.
Zu guter letzt müsste die Liste dann auch gespeichert und bei neuem Programmstart wieder geladen werden, vielleicht bietet ja eine Tabelle/Liste diese Option schon? - Dies kann ich zur Not aber auch auf herkömmliche Art und Weise lösen.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Sa 18.07.09 17:56
Hallo,
Bofrost_Mann hat folgendes geschrieben : | Habe ich denn bei einer StringGrid die Möglichkeit Checkbuttons o.ä. in eine Spalte zu packen? - denn das Ganze mit 0en oder 1en zu machen ist optisch nicht sehr ansprechend ...
(Optional wäre auch eine Spalte mit DropdownBoxen machbar?) |
Checkboxen kannst Du mit DrawFramwControl(...), Stichworte: DFCS_BUTTONCHECK, DFCS_CHECKED selber zeichnen,
die 0 bzw 1 kann man in StringGrid.Objects[c,r] ablegen.
Zu ComboBoxen im Grid geht es da weiter: die Schweitzer haben da was
Weiter entwickelte Grids oder ListViews/Treeviews bieten sowas auch schon standardmäßig an, z.B.
http://www.soft-gems.net/VirtualTreeview/
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Sa 18.07.09 18:00
Also ich denke, dass müsste doch zum Beispiel so zu lösen sein:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TGridForm.StringGridOnClick(Sender: TObject); begin if not DeinStrinGrid.Cells[Col,Row]=Haken then DeinStrinGrid.Cells[Col,Row]:=HakenZeichen else DeinStrinGrid.Cells[Col,Row]:=KreuzZeichen; end; |
Das Kreuz-Zeichen ist in der Schriftart Symbol 0xB4 und das Haken-Zeichen ist 0xD6;
|
|
Bofrost_Mann 
Hält's aus hier
Beiträge: 15
Win XP
Delphi 5, Delphi 2005
|
Verfasst: Sa 18.07.09 18:24
ffgorcky hat folgendes geschrieben : | Also ich denke, dass müsste doch zum Beispiel so zu lösen sein:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TGridForm.StringGridOnClick(Sender: TObject); begin if not DeinStrinGrid.Cells[Col,Row]=Haken then DeinStrinGrid.Cells[Col,Row]:=HakenZeichen else DeinStrinGrid.Cells[Col,Row]:=KreuzZeichen; end; |
Das Kreuz-Zeichen ist in der Schriftart Symbol 0xB4 und das Haken-Zeichen ist 0xD6; |
Gut und den wechsel zwischen enabled und disabled könnte man dann ja mittels Click auf die Zelle realisieren, richtig? - Wäre eine Überlegung wert.
Vielen Dank auch für den obigen Beitrag, werde mich die Tage mal mit den VirtualTree's etc. auseinandersetzen.
Schönen Abend noch!
|
|
|