Discussion:
Suche passendes Control (Dephi 10.3.1 Community)
(zu alt für eine Antwort)
k***@gmail.com
2019-02-18 09:48:09 UTC
Permalink
Hallo,

Ich hoffe, hier liest noch jemand :)

Ich bin auf der Suche nach einem passenden Control für meine Anwendung. Es soll eine Art Tabelle sein, mit teilweise verbundenen Zellen, und mit Radiobuttons. Ich hab das hier mal aufgemalt:

Loading Image...

Ein paar Hinweise:
- Die Anzahl der Vorgänge (erste Spalte) ist erst zur Laufzeit bekannt, ebenso die Anzahl der Bedingungen pro Vorgang.
- Der Text in der zweiten Spalte ("Bedingung") kann lang sein, d.h. der Text müßte umgebrochen werden.
- Die Felder der ersten beiden Spalten müssen Unicode-Text-fähig sein.
- Die Radioboxes sollen pro Zeile gruppiert sein (nur JA oder NEIN pro Zeile).
- Das ganze sollte scrollbar sein, bei vielen Vorgängen bzw. bei langen Beschreibungen.

Kennt ihr da irgend was passendes? Oder ein Control, auf dem ich aufbauen könnte?

Ich bin mir nicht sicher, ob ein StringGrid gehen würde. Unterstützt dies verbundene Zellen (hier in der esten Spalte "Vorgang")? Und integrierte Radiobuttons?

Danke für eure Hilfe.

Viele Grüße,
KT
Matthias Eißing
2019-02-18 10:10:06 UTC
Permalink
Post by k***@gmail.com
Hallo,
Ich hoffe, hier liest noch jemand :)
https://i.imgur.com/izhceos.jpg
- Die Anzahl der Vorgänge (erste Spalte) ist erst zur Laufzeit bekannt, ebenso die Anzahl der Bedingungen pro Vorgang.
- Der Text in der zweiten Spalte ("Bedingung") kann lang sein, d.h. der Text müßte umgebrochen werden.
- Die Felder der ersten beiden Spalten müssen Unicode-Text-fähig sein.
- Die Radioboxes sollen pro Zeile gruppiert sein (nur JA oder NEIN pro Zeile).
- Das ganze sollte scrollbar sein, bei vielen Vorgängen bzw. bei langen Beschreibungen.
Kennt ihr da irgend was passendes? Oder ein Control, auf dem ich aufbauen könnte?
Ich bin mir nicht sicher, ob ein StringGrid gehen würde. Unterstützt dies verbundene Zellen (hier in der esten Spalte "Vorgang")? Und integrierte Radiobuttons?
Darf es Geld kosten?
https://www.tmssoftware.com/site/advgrid.asp
https://www.tmssoftware.com/site/asg42.asp

Ansonsten:
https://stackoverflow.com/questions/26768056/tstringgrid-merge-cell-drawing
--
cu://Matthias.Eißing.de
k***@gmail.com
2019-02-18 10:19:52 UTC
Permalink
Post by Matthias Eißing
Darf es Geld kosten?
https://www.tmssoftware.com/site/advgrid.asp
https://www.tmssoftware.com/site/asg42.asp
Wow, das sieht gut aus, danke. Dann überlege ich mal, ob ich das Geld investiere.
Post by Matthias Eißing
https://stackoverflow.com/questions/26768056/tstringgrid-merge-cell-drawing
Auch gut. Da muss ich bloß noch schauen, wie ich die Radiobuttons reinbekomme.

Danke vielmals.

Saludos,
AK
Jens Köhler
2019-02-18 15:32:10 UTC
Permalink
Post by k***@gmail.com
Auch gut. Da muss ich bloß noch schauen, wie ich die Radiobuttons reinbekomme.
Saludos,
AK
ich habe das in meinen Beständen gefunden
für erfüllt oder nicht reicht ja eine Checkbox, ansonsten lässt sich das
evtl. umbauen.

CheckBoxen in einen StringGrid
// zeichnet CheckBoxen in die 1. Spalte
// bei 1 als Text in der Zelle werden sie mit Haken gezeichnet
procedure TForm1.StringGrid1DrawCell(Sender : TObject;
aCol, aRow : Integer;
Rect : TRect;
State : TGridDrawState);
var
Grid : TStringgrid;
R : TRect;
s : string;
begin
Grid := Sender as TStringgrid;
s := Grid.Cells[aCol, aRow];

if (aCol = 0) and (aRow >= grid.FixedRows) then // 1. Spalte
begin
// Zelluntergrund, überschreibt den Text
Grid.Canvas.FillRect(Rect);

// CheckBox zeichnen, bei 1 mit Haken sonst ohne
R := classes.Rect(0, 0, 15, 15);
OffsetRect(R, Rect.Left+5, Rect.Top+5);
if s = '1' then
DrawFrameControl(Grid.Canvas.Handle, R, DFC_Button,
DFCS_ButtonCheck or DFCS_Checked)
else
DrawFrameControl(Grid.Canvas.Handle, R, DFC_Button,
DFCS_ButtonCheck);
end;
end; // TForm1.StringGrid1DrawCell


procedure TForm1.StringGrid1MouseDown(Sender : TObject;
Button : TMouseButton;
Shift : TShiftState;
X, Y : Integer);
// schaltet in der Zelle den Text zwischen 0 und 1 um
var
s : string;
x1, y1 : integer;// r : TPoint;
Grid : TStringgrid;
begin
Grid := Sender as TStringgrid;
if (Button = mbLeft) then
begin
Grid.MouseToCell(X, Y, x1, y1);
if (x1 = 0) and (y1 >= Grid.FixedRows) then // 1. Spalte
begin
s := Grid.Cells[x1, y1];
if s = '1' then
s := '0'
else
s := '1';
Grid.Cells[x1, y1] := s;
Grid.Invalidate;
end; // if (x1 = 0)
end; // if (Button = mbLeft)
end; // TForm1.StringGrid1MouseDown


Jens

Loading...