Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Наследование в МСК   Найти похожие ветки 

 
stranger_2004 ©   (2004-12-09 18:22) [0]

Понаследовался от TKOLMemo, компонент на форме отображается нормально,
При компиляции выдает ошибку TKOLLogger Undeclared Identifier
Вот код компоненты:

unit KOLLogger;

interface
{$I KOLDEF.INC}
uses
 KOL,mirror,Classes,Controls,objects,mckCtrls,FastStrList,Windows,Messages,Graphics;
type
 PUpDownEvent = ^TUpDownEvent;
 TUpDownEvent = procedure (Sender: TObject;Button: TMouseButton; Shift: DWORD; X, Y: Integer) of object;
 PLogger = ^TKOLLogger;
 TKOLLogger = class(TKOLMemo)
 private
   JustChanged,
   AutoScroll: Boolean;
   FLines: PFastStrListEx;
   FCharWidth, FCharHeight,
   FCols, FRows,
   FX, FY: Integer;
   FC: Boolean;
   b: TBitmap;
   FColor: TColor;
   fMouseDown:TUpDownEvent;
   fMouseUp:TUpDownEvent;

   procedure WMSetFocus(var M: TMessage); message WM_SetFocus;
   procedure WMKillFocus(var M: TMessage); message WM_KillFocus;
   procedure SetLines(V: PFastStrListEx);
   procedure SetColor(c: TColor);
   procedure WMGetDlgCode(var Msg: TWMGetDlgCode); message WM_GETDLGCODE;
 published
   property Align;
   property Font;
   property ParentFont;
   property TabOrder;
   property TabStop;
   property OnMouseDown:TUpDownEvent read fMouseDown write fMouseDown;
   property OnMouseUp:TUpDownEvent read fMouseUp write fMouseUp;
 public
//    procedure KeyDown(Sender: PControl; var Key: Longint; Shift: DWORD); override;
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
   function CalcBounds: Boolean;
   property Lines: PFastStrListEx read FLines write SetLines;
   property Color: TColor read FColor write SetColor;
   procedure DoPaint(sil: boolean);
   {
Здесь возникает вопрос:
     я так понимаю что нижесл. метод перекрывает VCL - овский
     procedure CreateParams(var Params: TCreateParams); override;
     От сюда и пляшу
Если нет, то поправьте pls.
}
   procedure CreateSubClass(var Params: TCreateParams; ControlClassName: PChar);
 end;
 procedure Register;
implementation
 procedure Register;
 begin
   RegisterComponents("KOL-MyAppUtils-comps",[TKOLLogger]);
 end;
{ TKOLLogger }

function TKOLLogger.CalcBounds: Boolean;
begin
 Result := False;
 if FCharWidth = 0 then Exit;
 FCols := (FX+FCharWidth-1) div FCharWidth;
 FRows := (FY+FCharHeight-1) div FCharHeight;
end;

constructor TKOLLogger.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 ControlStyle := ControlStyle + [csOpaque];
 TabStop := True;
 b := TBitmap.Create;
 FColor := clBtnFace
end;

procedure TKOLLogger.CreateSubClass(var Params: TCreateParams;
 ControlClassName: PChar);
begin
 inherited ;
 with Params do
 begin
   ExStyle := ExStyle or WS_EX_CLIENTEDGE;
 end;
end;

destructor TKOLLogger.Destroy;
begin
 b.FreeImage;
 b.Free;
 b := nil;
 inherited Destroy;
end;

procedure TKOLLogger.DoPaint(sil: boolean);
begin
 if FLines <> nil then
 begin
   Text.Text := FLines^.Text;
   Perform(em_linescroll,0,FLines.Count);
 end;
end;

procedure TKOLLogger.SetColor(c: TColor);
begin
 FColor:=c;
 FC:=true;
end;

procedure TKOLLogger.SetLines(V: PFastStrListEx);
begin
 if FLines = V then Exit;
 FLines := V;
 if (FLines <> nil) then
 begin
   Text.Text :=  FLines^.Text;
   Perform(em_linescroll,0,FLines.Count);
 end;
 AutoScroll := True;
 JustChanged := True;
 Invalidate;
end;

procedure TKOLLogger.WMGetDlgCode(var Msg: TWMGetDlgCode);
begin
 Msg.Result := DLGC_WANTARROWS;
end;

procedure TKOLLogger.WMKillFocus(var M: TMessage);
begin
 inherited;
 AutoScroll := True;
 Invalidate;
end;

procedure TKOLLogger.WMSetFocus(var M: TMessage);
begin
 inherited;
 AutoScroll := False;
 Invalidate;
end;

end.


 
Gandalf ©   (2004-12-09 20:03) [1]

Это MCK, строку PLogger не понял... Мы берем указатель от KOL класса, а не от MCK. А как ты его используешь? Где   function AdditionalUnits: string; override;? Где Setup***?


 
stranger_2004 ©   (2004-12-10 07:11) [2]

Уже вроде разобрался, mck классы - это как я понял только зеркало для VCL, для нормальной работы первоначально нужно слепить KOL класс в чистом виде и как ты сказал от него наследоваться :-). Вчера до ночи в исходниках колы разбирался, Сегодня переделывать буду.

Для чего использую:
Переделываю сервер приложений (2 звено) для трехзвенки, нужно для фрейма отображения событий.


 
Gandalf ©   (2004-12-10 15:19) [3]

MCK - угу зеркала, design-only. В exe от них ни капли не попадает.



Страницы: 1 вся ветка

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
6-1112600287
Mary
2005-04-04 11:38
2005.07.11
Как идентифицировать уведомление о прочтении ?


3-1117460455
-=XP=-
2005-05-30 17:40
2005.07.11
Эксклюзивный доступ к БД MS SQL


1-1118749464
GEEK
2005-06-14 15:44
2005.07.11
В чем ошибка? Можно ли сравнить две TPoint?


14-1118838198
Lexa
2005-06-15 16:23
2005.07.11
Красивые таблички


14-1118215525
Valera
2005-06-08 11:25
2005.07.11
Ошибка с архивом