Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "KOL";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.049 c
6-1112684994
lin
2005-04-05 11:09
2005.07.11
TService + TClientSocket + TServerSocket


4-1116186014
Gnut
2005-05-15 23:40
2005.07.11
Обои на раб. стол.


1-1118640305
Juster
2005-06-13 09:25
2005.07.11
Пропись пути для модулей


1-1119513253
TAN_K
2005-06-23 11:54
2005.07.11
Фреймы


1-1118819243
dmitry501
2005-06-15 11:07
2005.07.11
Произвольное изменение региональных настроек





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский