schiet mij maar lek. Ik heb de volgende code:
Dit werkt prima. Nou wil ik in het echte programma gaan bouwen en gaat ie zeuren. Dus wat ik doe:Code:unit main; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, LCLType; type { TfrmMain } TfrmMain = class(TForm) ComboBox1: TComboBox; procedure FormCreate(Sender: TObject); private { private declarations } procedure MyComboOnDrawItemHandler(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState); public { public declarations } end; var frmMain: TfrmMain; implementation {$R *.lfm} { TfrmMain } procedure TfrmMain.FormCreate(Sender: TObject); begin ComboBox1.OnDrawItem := @MyComboOnDrawItemHandler; end; procedure TfrmMain.MyComboOnDrawItemHandler(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState); var Sender: TComboBox; begin Sender := (Control as TComboBox); If odSelected in State then begin Sender.Canvas.Font.Color := clWhite; if Index = 0 then Sender.Canvas.Brush.Color := clLtGray else if Index = 1 then Sender.Canvas.Brush.Color := clNavy else Sender.Canvas.Brush.Color := clMaroon; end else begin Sender.Canvas.Brush.Color := clWhite; if Index = 0 then Sender.Canvas.Font.Color := clDkGray else if Index = 1 then Sender.Canvas.Font.Color := clNavy else Sender.Canvas.Font.Color := clMaroon; end; if index = 0 then begin Sender.Canvas.Font.Bold := true; Sender.Canvas.Font.Italic := true; end else begin Sender.Canvas.Font.Bold := false; Sender.Canvas.Font.Italic := false; end; Sender.Canvas.FillRect(ARect); Sender.Canvas.TextOut(ARect.Left,ARect.Top,Sender. Items[Index]); end; end.
Code:NewComboBox := TComboBox.Create(Self); with NewComboBox do begin Top := y_pos; Width := 300; Left := 200; Parent := Page; OnChange := @MyComboOnChangeHandler; OnDrawItem := @MyComboOnDrawItemHandler; ReadOnly := True; Style := csOwnerDrawFixed;
Code:TfrmMain = class(TForm) btnSelectGoldenFile: TButton; Button1: TButton; Button2: TButton; .. procedure MyComboOnDrawItemHandler(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState);
En ik voeg weer de "TfrmMain.MyComboOnDrawItemHandler" code in. Nou gaat lazarus echter zeuren:
main.pas(160,20) Error: function header doesn't match any method of this class "TfrmMain.MyComboOnDrawItemHandler(TWinControl,Lon gInt,RECT,TOwnerDrawState);"
main.pas(95,15) Hint: Found declaration: TfrmMain.MyComboOnDrawItemHandler(TWinControl,Long Int,RECT,TOwnerDrawState);
Iemand een idee? Zit er al te lang naar te kijken....
Bookmarks