Einzelnen Beitrag anzeigen

Freyr77
(Gast)

n/a Beiträge
 
#1

Create(self) bei ausgelagerter Funktion, Methodenzeiger und reguläre Prozedur

  Alt 21. Okt 2016, 14:01
Delphi-Version: 10 Seattle
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;
  Mit Zitat antworten Zitat