Autor Beitrag
Bofrost_Mann
Hält's aus hier
Beiträge: 15

Win XP
Delphi 5, Delphi 2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 18.07.09 12:13 
user profile iconLannes hat folgendes geschrieben Zum zitierten Posting springen:
ListView, ich bevorzuge ersteres, ist flexibler.
Flexibler? :shock:
Direkt alle Spalten editierbar, ja. Aber sonst...
Eine TListView sieht tausendmal besser aus, hat Sortiermöglichkeiten direkt drin, ...

Ich benutze aber auch die von user profile iconBenBE genannte virtuelle Komponente, da die schon sehr sehr viel mehr Möglichkeiten bietet. Und sonst wäre eine normale TListView die sinnvollste Variante.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Sa 18.07.09 13:06 
Hallo,
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconLannes hat folgendes geschrieben Zum zitierten Posting springen:
ListView, ich bevorzuge ersteres, ist flexibler.
Flexibler? :shock:
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. :wink:
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. :idea:

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 Threadstarter
Hält's aus hier
Beiträge: 15

Win XP
Delphi 5, Delphi 2005
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 15

Win XP
Delphi 5, Delphi 2005
BeitragVerfasst: Sa 18.07.09 17:37 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Sa 18.07.09 17:56 
Hallo,
user profile iconBofrost_Mann hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Sa 18.07.09 18:00 
Also ich denke, dass müsste doch zum Beispiel so zu lösen sein:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 15

Win XP
Delphi 5, Delphi 2005
BeitragVerfasst: Sa 18.07.09 18:24 
user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
Also ich denke, dass müsste doch zum Beispiel so zu lösen sein:
ausblenden 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!