git-svn-id: https://svn.code.sf.net/p/kolmck/code@108 91bb2d04-0c0c-4d2d-88a5-bbb6f4c1fa07
This commit is contained in:
dkolmck 2011-11-02 16:34:07 +00:00
parent db2cb380c7
commit 0f9b11b138
4 changed files with 57 additions and 12 deletions

20
KOL.pas
View File

@ -14,7 +14,7 @@
Key Objects Library (C) 2000 by Vladimir Kladov.
****************************************************************
* VERSION 3.1415926535897
* VERSION 3.15
****************************************************************
K.O.L. - is a set of objects and functions to create small programs
@ -11558,6 +11558,8 @@ var _AnsiCompareStrNoCaseA: function(S1, S2: PAnsiChar): Integer =
{* The same, but for PChar ANSI strings }
function AnsiCompareTextA( const S1, S2: AnsiString ): Integer;
{* }
function CompareAnsiCase( const S1, S2: PAnsiChar ): Integer;
function CompareAnsiNoCase( const S1, S2: PAnsiChar ): Integer;
{$IFDEF WIN}
{$IFNDEF _FPC}
@ -12434,6 +12436,8 @@ procedure SortArray( const Data: Pointer; const uNElem: Dword;
dwords (or integers or pointers occupying for 4 bytes for each item. }
{$ENDIF}
procedure SwapStrListExItems( const Sender: Pointer; const e1, e2: DWORD );
procedure SwapListItems( const L: Pointer; const e1, e2: DWORD );
{* Use this function as the last parameter for SortData call when a PList
object is sorting. SwapListItems just exchanges two items of the list. }
@ -14268,7 +14272,7 @@ function CrackStack_MapInFile( const MapFileName: KOLString; Max_length: Integer
//......... these declarations are here to stop hints from Delphi5 while compiling MCK:
function CallTControlCreateWindow( Ctl: PControl ): Boolean;
function DumpWindowed( c: PControl ): PControl;
function WndProcAppAsm( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean; forward;
function WndProcAppAsm( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
//22{$IFDEF ASM_VERSION}
const ButtonClass: array[ 0..6 ] of KOLChar = ( 'B','U','T','T','O','N',#0 );
//22{$ENDIF ASM_VERSION}
@ -14801,6 +14805,8 @@ asm
TEST EAX, EAX
JNZ @@exit
MOV EAX, offset[EmptyString]
//LEA EAX, [EmptyString]
//MOV EAX, [EmptyString]
@@exit:
end;
@ -25464,14 +25470,15 @@ var h12, hAM: Boolean;
function GetMonth( const fmt: KOLString; var S: PKOLChar ): Integer;
var SD: TSystemTime;
M: Integer;
C, MonthStr: KOLString;
MonthStr: KOLString;
begin
GetSystemTime( SD );
SD.wDay := 1;
for M := 1 to 12 do
begin
SD.wMonth := M;
C := SystemDate2Str( SD, LOCALE_USER_DEFAULT, dfLongDate, PKOLChar( fmt + '/dd/yyyy/' ) );
MonthStr := Parse( C, '/' );
MonthStr := SystemDate2Str( SD, LOCALE_USER_DEFAULT, dfLongDate, PKOLChar( fmt {+ '/dd/yyyy/'} ) );
//MonthStr := Parse( C, '/' ); //++ -- by GMax
if AnsiCompareStrNoCase( MonthStr, Copy( S, 1, Length( MonthStr ) ) ) = 0 then
begin
Inc( S, Length( MonthStr ) );
@ -32644,7 +32651,8 @@ begin
Form := Form.Parent;
Form := Form.ParentForm;
if (Form <> nil) and (Form.MDIClient <> nil) then
Result := TranslateMDISysAccel( Form.MDIClient.fHandle, Msg );
Result := TranslateMDISysAccel( Form.MDIClient.fHandle,
Windows.TMsg(Msg) );
end;
end;
end;

View File

@ -26,6 +26,7 @@
TKOLMDIClient = PControl;
TKOLMDIChild = Pointer;
TKOLService = Pointer;
TBringFront = Pointer;
TKOLButton = PControl;
TKOLLabel = PControl;

View File

@ -3,6 +3,12 @@
-- included in KOL.pas --
*******************************************************************************}
{$IFNDEF FPC}
{$IFNDEF TMSG_WINDOWS}
{$DEFINE TMSG_DECODED}
{$ENDIF}
{$ENDIF}
{$IFDEF TMSG_DECODED}
{$I MsgDecode.pas}
type
TMsg = packed record
@ -20,6 +26,7 @@ type
end;
tagMSG = TMsg;
{$ENDIF TMSG_DECODED}
////////////////////////////////////////////////////////////////////////////

View File

@ -2290,6 +2290,7 @@ type
//
// Ôóíêöèÿ, êîòîðàÿ èíèöèàëèçàöèþ ÷àñòè ñâîéñòâ âûïîëíÿåò â âèäå
// ïîñëåäîâàòåëüíîñòè âûçîâîâ "ïðîçðà÷íûõ" ìåòîäîâ (ñì. îïèñàíèå KOL)
function ParentBorder: Integer;
function GenerateTransparentInits: String; virtual;
function P_GenerateTransparentInits: String; virtual;
@ -5413,7 +5414,9 @@ begin
S := S + '.MouseTransparent';
if LikeSpeedButton then
S := S + '.LikeSpeedButton';
if Border <> DefaultBorder then
if (Border <> DefaultBorder) or
(Border = DefaultBorder) and
(ParentBorder >= 0) and (ParentBorder <> Border) then
S := S + '.SetBorder( ' + IntToStr( Border ) + ')';
Result := Trim( S );
@ -10479,6 +10482,23 @@ begin
Result := 2;
end;
function TKOLCustomControl.ParentBorder: Integer;
var C: TWinControl;
begin
Result := -1;
C := Parent;
if C <> nil then
begin
if C is TKOLCustomControl then
Result := (C as TKOLCustomControl).Border
else if C is TCustomForm then
begin
if ParentKOLForm <> nil then
Result := ParentKOLForm.Border;
end;
end;
end;
{ TKOLApplet }
procedure TKOLApplet.AssignEvents(SL: TStringList; const AName: String);
@ -11918,7 +11938,7 @@ end;
// íàñòðîåííûé â design-time íà ôîðìå MCK-ïðîåêòà. Óñòàíàâëèâàþòñÿ âñå ïóáëè÷íûå
// ñâîéñòâà, îòëè÷àþùèåñÿ ñâîèì çíà÷åíèåì îò òåõ, êîòîðûå íàçíà÷àþòñÿ ïî óìîë÷àíèþ
// â êîíñòðóêòîðå îáúåêòà.
procedure ConstructComponent( SL: TStringList; C: TComponent );
function ConstructComponent( SL: TStringList; C: TComponent ): Boolean;
var Props, PropsD: PPropList;
NProps, NPropsD, I, J: Integer;
PropName, PropValue, PropValueD: String;
@ -11932,6 +11952,7 @@ begin
DB 'ConstructComponent', 0
@@e_signature:
end;
Result := FALSE;
//SL.Add( ' Result.' + C.Name + ' := ' + C.ClassName + '.Create( nil );' );
if C is TOleControl then
SL.Add( ' Result.' + C.Name +
@ -11942,6 +11963,11 @@ begin
try
try
NProps := GetPropList( C.ClassInfo, tkAny, Props );
for I := 0 to NProps-1 do
begin
if Props[I].Name = 'NotConstruct_KOLMCK' then
Exit; {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>}
end;
SL.Add( ' //-- found ' + IntToStr( NProps ) + ' published props' );
if NProps > 0 then
BEGIN
@ -11995,11 +12021,13 @@ begin
END;
finally
FreeMem( Props );
FreeMem( PropsD );
D.Free;
end;
except
SL.Add( ' //-----^------Exception while getting properties of ' + C.Name );
end;
Result := TRUE;
end;
procedure TKOLForm.GenerateChildren( SL: TStringList; OfParent: TComponent; const OfParentName: String; const Prefix: String;
@ -12658,9 +12686,10 @@ begin
if TComponent( oc[ I ] ) is TComponent then // àé-ÿ-ÿé!
begin
SL.Add( '' );
ConstructComponent( SL, oc[ I ] );
GenerateAdd2AutoFree( SL, 'Result.' + TComponent( oc[ I ] ).Name + '.Free',
FALSE, 'Add2AutoFreeEx', nil );
if ConstructComponent( SL, oc[ I ] ) then
GenerateAdd2AutoFree( SL, 'Result.' +
TComponent( oc[ I ] ).Name + '.Free',
FALSE, 'Add2AutoFreeEx', nil );
end;
end;
@ -15276,7 +15305,7 @@ begin
end;
end;
if Border <> 2 then
if (Border <> 2) then
if FormCompact then
begin
if Border = 1 then