Ich lagere gerade doppelte Funktionen/Prozeduren aus meinen Codes(zusammenhängend in einem Programm, aber jeder Code ein separater Programmbestandteil) in eine Art "Settings"
Unit aus.
Jetzt bin ich auf ein Problem gestoßen.
Ich habe folgende Funktion:
Delphi-Quellcode:
var
lChkBox: TGridCheckBox;
begin
if (pColumn <> 0) AND (pRow = 0) then
Exit;
lChkBox := TGridCheckbox.Create(inherited);
with lChkBox do
begin
Column := pColumn;
Row := pRow;
parent := Grid;
Checked := True;
Caption := '';
Width := ChkboxWidth;
Height := ChkboxHeight;
OnMouseDown := CheckboxMouseDown;
Visible := false;
Invalidate;
end;
Grid.Objects[pColumn, pRow] := lChkBox;
Result := lChkBox;
end;
.. die in beiden Codes vorkommt. Jetzt hab ich das Problem das er mir das Create(self) anmeckert, und komm gerade nicht auf die Lösung.
Ich dachte es geht mit "inherited", aber das ist es auch nicht.
Zweites Problem, in der gleichen Funktion. Hier wird ja "CheckBoxMouseDown" aufgerufen, welches ebenfalls in beiden Codes als Prozedur drinnen war. Das hab ich jetzt auch in meine "Settings"
unit integriert, allerdings sagt er da jetzt "Inkompatible Typen: Methodenzeiger und reguläre Prozedur".
"CheckBoxMouseDown" sieht so aus:
Delphi-Quellcode:
var
lChkBox: TGridCheckBox;
begin
if Button = TMouseButton.mbLeft then
begin
lChkBox := (Sender as TGridCheckbox);
lChkBox.Checked := not lChkBox.Checked;
end;
end;