Bedankt voor deze optie.
Ik ga er mee aan de slag.
Om het e.e.a. te kunnen testen heb ik een voorbeeld programma gemaakt bestaande uit twee units (mainform en de dialog)
Op het mainform staat dus alleen een knop die het dialog venster met de stringgrid laat zien.
Hieronder de code
mainform
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
TempData:TData;
DataList:Tlist<TData>;
i:integer;
begin
DataList:=Tlist<TData>.Create;
tempdata.Naam:='Test 1';
tempdata.Eenheid:='V';
tempData.L_Spec:='1';
tempData.H_Spec:='2';
Datalist.Add(tempData);
tempdata.Naam:='Test 2';
tempdata.Eenheid:='V';
tempData.L_Spec:='5';
tempData.H_Spec:='6';
Datalist.Add(tempData);
dlgMesInput.TestData:=DataList;
dlgMesInput.FillForm;
DataList.Clear;
tempdata.Naam:='Test 3';
tempdata.Eenheid:='V';
tempData.L_Spec:='7';
tempData.H_Spec:='8';
Datalist.Add(tempData);
dlgMesInput.TestData:=DataList;
dlgMesInput.FillForm;
DataList.Free;
//
end;
code van het dialog venster
Code:
procedure TdlgMesInput.btnValContinueClick(Sender: TObject);
var
i: Integer;
tempData:TData;
begin
for i := 0 to TestData.Count-1 do
begin
tempData:=TestData[i];
tempData.Waarde :=stgInvoerData.Cells[1,i+1];
TestData[i]:=TempData;
end;
ModalResult:=mrOk;
end;
procedure TdlgMesInput.FillForm;
var
i: Integer;
begin
stgInvoerData.RowCount:=1 + TestData.Count;
stgInvoerData.Cells[0,0]:='Parameter';
stgInvoerData.Cells[1,0]:='Waarde';
stgInvoerData.Cells[2,0]:='Eenheid';
stgInvoerData.Cells[3,0]:='Spec_L';
stgInvoerData.Cells[4,0]:='Spec_H';
for i := 0 to TestData.Count-1 do
begin
stgInvoerData.Cells[0,i+1]:=TestData[i].Naam;
stgInvoerData.Cells[1,i+1]:='';
stgInvoerData.Cells[2,i+1]:=TestData[i].Eenheid;
stgInvoerData.Cells[3,i+1]:=TestData[i].L_Spec;
stgInvoerData.Cells[4,i+1]:=TestData[i].H_Spec;
end;
stgInvoerData.OnDrawCell:=stgInvoerDataDrawCell;
showmodal;
end;
procedure TdlgMesInput.stgInvoerDataDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var mycolor:Tcolor;
A:string;
begin
if (Acol >= Tstringgrid(Sender).FixedCols) and (Arow > 0) then
begin
mycolor := clwhite;
if not (Odd(ARow)) then mycolor:= $00DCCFC7;
// if (Acol = 1) and not(Opstelling.Items[Arow-1].checkInput(Tstringgrid(Sender).Cells[1,Arow]))then mycolor:=clWebPeachPuff;
with Tstringgrid(Sender) do
begin
Canvas.brush.Style := bsSolid;
Canvas.brush.color := mycolor;// style.Colors.ButtonSelectedColorFrom; //$00DCCFC7;
rect:=cellrect(ACol,ARow);
Canvas.FillRect(Rect);
Canvas.font.Color := clblack;
Canvas.brush.Style := bsClear;
rect.Left:=rect.Left+6;
rect.top:=rect.top+2;
A:=cells[acol, arow];
DrawText(Tstringgrid(Sender).Canvas.Handle,PChar(A),StrLen(PChar(A)),Rect,DT_WORDBREAK);
end;
end;
end;
procedure TdlgMesInput.stgInvoerDataSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if Acol =1 then
stgInvoerData.Options:=stgInvoerData.Options+[goEditing]
else
stgInvoerData.Options:=stgInvoerData.Options-[goEditing];
end;
Bookmarks