chore: Auto-formatted Pascal files: DfmEngine.pas, frmMain.pas, frmResults.pas, StyleNames.pas, WindowEnumerator.pas, Writers.pas

This commit is contained in:
instarepo 2022-09-09 01:02:56 +02:00 committed by Nikolaos Georgiou
parent fa7f696a53
commit 7350c2399f
6 changed files with 126 additions and 123 deletions

View File

@ -14,77 +14,77 @@ type
kcPanel, kcRadioButton, kcStatusBar, kcTreeView kcPanel, kcRadioButton, kcStatusBar, kcTreeView
); );
TKnownControls = set of TKnownControl; TKnownControls = set of TKnownControl;
TKnownControlHandlerProc = procedure(wnd: HWND; style: integer) of object; TKnownControlHandlerProc = procedure(wnd: HWND; style: Integer) of object;
TDfmBuilder = class TDfmBuilder = class
private private
PasList: TStrings; PasList: TStrings;
dfm1: TDfmWriter; dfm1: TDfmWriter;
Counts: array[TKnownControl] of integer; Counts: array[TKnownControl] of Integer;
CtlType: TKnownControl; CtlType: TKnownControl;
procedure DispatchHandle(wnd: HWND; style: integer); procedure DispatchHandle(wnd: HWND; style: Integer);
procedure HandleUnknown(wnd: HWND; style: integer); procedure HandleUnknown(wnd: HWND; style: Integer);
procedure HandleButton(wnd: HWND; style: integer); procedure HandleButton(wnd: HWND; style: Integer);
procedure HandleCheckBox(wnd: HWND; style: integer); procedure HandleCheckBox(wnd: HWND; style: Integer);
procedure HandleComboBox(wnd: HWND; style: integer); procedure HandleComboBox(wnd: HWND; style: Integer);
procedure HandleEdit(wnd: HWND; style: integer); procedure HandleEdit(wnd: HWND; style: Integer);
procedure HandleGroupBox(wnd: HWND; style: integer); procedure HandleGroupBox(wnd: HWND; style: Integer);
procedure HandleImage(wnd: HWND; style: integer); procedure HandleImage(wnd: HWND; style: Integer);
procedure HandleLabel(wnd: HWND; style: integer); procedure HandleLabel(wnd: HWND; style: Integer);
procedure HandleListBox(wnd: HWND; style: integer); procedure HandleListBox(wnd: HWND; style: Integer);
procedure HandleListView(wnd: HWND; style: integer); procedure HandleListView(wnd: HWND; style: Integer);
procedure HandlePanel(wnd: HWND; style: integer); procedure HandlePanel(wnd: HWND; style: Integer);
procedure HandleRadioButton(wnd: HWND; style: integer); procedure HandleRadioButton(wnd: HWND; style: Integer);
procedure HandleStatusBar(wnd: HWND; style: integer); procedure HandleStatusBar(wnd: HWND; style: Integer);
procedure HandleTreeView(wnd: HWND; style: integer); procedure HandleTreeView(wnd: HWND; style: Integer);
procedure PreHandleCtl(wnd: HWND); procedure PreHandleCtl(wnd: HWND);
procedure WriteDecl; procedure WriteDecl;
public public
constructor Create(APasList: TStrings); constructor Create(APasList: TStrings);
procedure Build(OutStream: TStream; const frmName: string; wnd: HWND); procedure Build(OutStream: TStream; const frmName: String; wnd: HWND);
end; end;
const const
KCNames: array[TKnownControl] of string = ( KCNames: array[TKnownControl] of String = (
'Unknown', 'Button', 'CheckBox', 'ComboBox', 'Edit', 'Unknown', 'Button', 'CheckBox', 'ComboBox', 'Edit',
'GroupBox', 'Image', 'Label', 'ListBox', 'ListView', 'GroupBox', 'Image', 'Label', 'ListBox', 'ListView',
'Panel', 'RadioButton', 'StatusBar', 'TreeView' 'Panel', 'RadioButton', 'StatusBar', 'TreeView'
); );
KCClassNames: array[TKnownControl] of string = ( KCClassNames: array[TKnownControl] of String = (
'TPanel', 'TButton', 'TCheckBox', 'TComboBox', 'TEdit', 'TPanel', 'TButton', 'TCheckBox', 'TComboBox', 'TEdit',
'TGroupBox', 'TImage', 'TLabel', 'TListBox', 'TListView', 'TGroupBox', 'TImage', 'TLabel', 'TListBox', 'TListView',
'TPanel', 'TRadioButton', 'TStatusBar', 'TTreeView' 'TPanel', 'TRadioButton', 'TStatusBar', 'TTreeView'
); );
function BitTest(Value, Mask: integer): boolean; function BitTest(Value, Mask: Integer): Boolean;
function GetWndText(wnd: HWND): string; function GetWndText(wnd: HWND): String;
procedure WriteBitmapData(dfm1: TDfmWriter; bmp: HBITMAP; procedure WriteBitmapData(dfm1: TDfmWriter; bmp: HBITMAP;
BelongsToPicture: boolean; const Name: string); BelongsToPicture: Boolean; const Name: String);
procedure WriteIconData(dfm1: TDfmWriter; icon: HICON; BelongsToPicture: boolean; procedure WriteIconData(dfm1: TDfmWriter; icon: HICON; BelongsToPicture: Boolean;
const Name: string); const Name: String);
implementation implementation
uses WindowEnumerator; uses WindowEnumerator;
function BitTest(Value, Mask: integer): boolean; function BitTest(Value, Mask: Integer): Boolean;
begin begin
Result := (Value and Mask) = Mask; Result := (Value and Mask) = Mask;
end; end;
function GetWndText(wnd: HWND): string; function GetWndText(wnd: HWND): String;
var var
len: integer; len: Integer;
begin begin
len := GetWindowTextLength(wnd); len := GetWindowTextLength(wnd);
SetLength(Result, len); SetLength(Result, len);
GetWindowText(wnd, PChar(Result), len + 1); GetWindowText(wnd, PChar(Result), len + 1);
end; end;
function GetBorderIconsStr(ABorderIcons: TBorderIcons): string; function GetBorderIconsStr(ABorderIcons: TBorderIcons): String;
const const
biStr: array [TBorderIcon] of string = ( biStr: array [TBorderIcon] of String = (
'biSystemMenu', 'biMinimize', 'biMaximize', 'biHelp'); 'biSystemMenu', 'biMinimize', 'biMaximize', 'biHelp');
var var
k: TBorderIcon; k: TBorderIcon;
@ -108,17 +108,17 @@ begin
PasList := APasList; PasList := APasList;
end; end;
procedure TDfmBuilder.Build(OutStream: TStream; const frmName: string; wnd: HWND); procedure TDfmBuilder.Build(OutStream: TStream; const frmName: String; wnd: HWND);
var var
InStream: TMemoryStream; InStream: TMemoryStream;
i: integer; i: Integer;
style, exstyle: longint; style, exstyle: Longint;
wndX: HWND; wndX: HWND;
procedure WriteBorderIcons; procedure WriteBorderIcons;
var var
bi: TBorderIcons; bi: TBorderIcons;
s: string; s: String;
begin begin
bi := []; bi := [];
if BitTest(style, WS_SYSMENU) then if BitTest(style, WS_SYSMENU) then
@ -167,10 +167,10 @@ begin
DFM1.Free; DFM1.Free;
end; end;
procedure TDfmBuilder.HandleUnknown(wnd: HWND; style: integer); procedure TDfmBuilder.HandleUnknown(wnd: HWND; style: Integer);
var var
class_name: array [0..100] of char; class_name: array [0..100] of Char;
i: integer; i: Integer;
begin begin
// since we don't know what window we're after write the class name // since we don't know what window we're after write the class name
GetClassName(wnd, class_name, 100); GetClassName(wnd, class_name, 100);
@ -178,18 +178,18 @@ begin
EnumerateChildWindows(wnd, Self.PreHandleCtl); EnumerateChildWindows(wnd, Self.PreHandleCtl);
end; end;
procedure TDfmBuilder.HandleButton(wnd: HWND; style: integer); procedure TDfmBuilder.HandleButton(wnd: HWND; style: Integer);
begin begin
dfm1.WriteStringProp('Caption', GetWndText(wnd)); dfm1.WriteStringProp('Caption', GetWndText(wnd));
dfm1.WriteBoolProp('Default', BitTest(style, BS_DEFPUSHBUTTON)); dfm1.WriteBoolProp('Default', BitTest(style, BS_DEFPUSHBUTTON));
end; end;
procedure TDfmBuilder.HandleCheckBox(wnd: HWND; style: integer); procedure TDfmBuilder.HandleCheckBox(wnd: HWND; style: Integer);
const const
CheckedStr: array [0..2] of string = ('cbUnchecked', 'cbChecked', 'cbGrayed'); CheckedStr: array [0..2] of String = ('cbUnchecked', 'cbChecked', 'cbGrayed');
var var
state: integer; state: Integer;
allowgrayed: boolean; allowgrayed: Boolean;
begin begin
allowgrayed := BitTest(style, BS_3STATE) or BitTest(style, BS_AUTO3STATE); allowgrayed := BitTest(style, BS_3STATE) or BitTest(style, BS_AUTO3STATE);
state := SendMessage(wnd, BM_GETCHECK, 0, 0); state := SendMessage(wnd, BM_GETCHECK, 0, 0);
@ -198,23 +198,23 @@ begin
dfm1.WriteCustomProp('State', CheckedStr[state]); dfm1.WriteCustomProp('State', CheckedStr[state]);
end; end;
procedure TDfmBuilder.HandleComboBox(wnd: HWND; style: integer); procedure TDfmBuilder.HandleComboBox(wnd: HWND; style: Integer);
begin begin
end; end;
procedure TDfmBuilder.HandleEdit(wnd: HWND; style: integer); procedure TDfmBuilder.HandleEdit(wnd: HWND; style: Integer);
begin begin
dfm1.WriteStringProp('Text', GetWndText(wnd)); dfm1.WriteStringProp('Text', GetWndText(wnd));
end; end;
procedure TDfmBuilder.HandleGroupBox(wnd: HWND; style: integer); procedure TDfmBuilder.HandleGroupBox(wnd: HWND; style: Integer);
begin begin
end; end;
procedure TDfmBuilder.HandleImage(wnd: HWND; style: integer); procedure TDfmBuilder.HandleImage(wnd: HWND; style: Integer);
var var
h: THANDLE; h: THANDLE;
OnlyIcon: boolean; OnlyIcon: Boolean;
begin begin
OnlyIcon := BitTest(style, SS_ICON); OnlyIcon := BitTest(style, SS_ICON);
if OnlyIcon then if OnlyIcon then
@ -235,43 +235,43 @@ begin
end; end;
end; end;
procedure TDfmBuilder.HandleLabel(wnd: HWND; style: integer); procedure TDfmBuilder.HandleLabel(wnd: HWND; style: Integer);
begin begin
dfm1.WriteBoolProp('AutoSize', False); dfm1.WriteBoolProp('AutoSize', False);
dfm1.WriteStringProp('Caption', GetWndText(wnd)); dfm1.WriteStringProp('Caption', GetWndText(wnd));
dfm1.WriteBoolProp('WordWrap', True); dfm1.WriteBoolProp('WordWrap', True);
end; end;
procedure TDfmBuilder.HandleListBox(wnd: HWND; style: integer); procedure TDfmBuilder.HandleListBox(wnd: HWND; style: Integer);
begin begin
end; end;
procedure TDfmBuilder.HandleListView(wnd: HWND; style: integer); procedure TDfmBuilder.HandleListView(wnd: HWND; style: Integer);
begin begin
end; end;
procedure TDfmBuilder.HandlePanel(wnd: HWND; style: integer); procedure TDfmBuilder.HandlePanel(wnd: HWND; style: Integer);
begin begin
end; end;
procedure TDfmBuilder.HandleRadioButton(wnd: HWND; style: integer); procedure TDfmBuilder.HandleRadioButton(wnd: HWND; style: Integer);
begin begin
end; end;
procedure TDfmBuilder.HandleStatusBar(wnd: HWND; style: integer); procedure TDfmBuilder.HandleStatusBar(wnd: HWND; style: Integer);
begin begin
end; end;
procedure TDfmBuilder.HandleTreeView(wnd: HWND; style: integer); procedure TDfmBuilder.HandleTreeView(wnd: HWND; style: Integer);
begin begin
end; end;
procedure WriteBitmapData(dfm1: TDfmWriter; bmp: HBITMAP; procedure WriteBitmapData(dfm1: TDfmWriter; bmp: HBITMAP;
BelongsToPicture: boolean; const Name: string); BelongsToPicture: Boolean; const Name: String);
var var
b: TBitmap; b: TBitmap;
Memory: TTextWriter; Memory: TTextWriter;
Size, Offset: integer; Size, Offset: Integer;
begin begin
b := TBitmap.Create; b := TBitmap.Create;
Memory := TTextWriter.Create(TMemoryStream.Create); Memory := TTextWriter.Create(TMemoryStream.Create);
@ -301,8 +301,8 @@ begin
end; end;
end; end;
procedure WriteIconData(dfm1: TDfmWriter; icon: HICON; BelongsToPicture: boolean; procedure WriteIconData(dfm1: TDfmWriter; icon: HICON; BelongsToPicture: Boolean;
const Name: string); const Name: String);
var var
i: TIcon; i: TIcon;
k: TTextWriter; k: TTextWriter;
@ -332,7 +332,7 @@ end;
procedure TDfmBuilder.WriteDecl; procedure TDfmBuilder.WriteDecl;
var var
s: string; s: String;
begin begin
Inc(Counts[CtlType]); Inc(Counts[CtlType]);
s := KCNames[CtlType] + IntToStr(Counts[CtlType]) + ': ' + KCClassNames[CtlType]; s := KCNames[CtlType] + IntToStr(Counts[CtlType]) + ': ' + KCClassNames[CtlType];
@ -341,7 +341,7 @@ begin
dfm1.Ident := dfm1.Ident + 2; dfm1.Ident := dfm1.Ident + 2;
end; end;
procedure TDfmBuilder.DispatchHandle(wnd: HWND; style: integer); procedure TDfmBuilder.DispatchHandle(wnd: HWND; style: Integer);
begin begin
case CtlType of case CtlType of
kcUnknown: HandleUnknown(wnd, style); kcUnknown: HandleUnknown(wnd, style);
@ -363,8 +363,8 @@ end;
procedure TDfmBuilder.PreHandleCtl(wnd: HWND); procedure TDfmBuilder.PreHandleCtl(wnd: HWND);
var var
class_name: array [0..100] of char; class_name: array [0..100] of Char;
style: integer; style: Integer;
begin begin
GetClassName(wnd, class_name, 100); GetClassName(wnd, class_name, 100);
style := GetWindowLong(wnd, GWL_STYLE); style := GetWindowLong(wnd, GWL_STYLE);

View File

@ -38,7 +38,7 @@ const
WS_VISIBLE, WS_VISIBLE,
WS_VSCROLL); WS_VSCROLL);
WindowStyleName: array [0..21] of string = ( WindowStyleName: array [0..21] of String = (
'Border', 'Border',
'Caption', 'Caption',
'Child', 'Child',
@ -62,7 +62,7 @@ const
'Visible', 'Visible',
'Vertical scroll bar'); 'Vertical scroll bar');
ExtendedWindowStyle: array [0..20] of integer = ( ExtendedWindowStyle: array [0..20] of Integer = (
WS_EX_ACCEPTFILES, WS_EX_ACCEPTFILES,
WS_EX_APPWINDOW, WS_EX_APPWINDOW,
WS_EX_CLIENTEDGE, WS_EX_CLIENTEDGE,
@ -85,7 +85,7 @@ const
WS_EX_TRANSPARENT, WS_EX_TRANSPARENT,
WS_EX_WINDOWEDGE); WS_EX_WINDOWEDGE);
ExtendedWindowStyleName: array [0..20] of string = ( ExtendedWindowStyleName: array [0..20] of String = (
'Drag drop recepient', 'Drag drop recepient',
'Minimize on taskbar', 'Minimize on taskbar',
'Sunken edge border', 'Sunken edge border',

View File

@ -9,7 +9,7 @@ uses
type type
{ An object method that accepts a HWND } { An object method that accepts a HWND }
TWndConsumer = procedure (Wnd: HWND) of object; TWndConsumer = procedure(Wnd: HWND) of object;
{ Calls the given consumer for every child window of the given window } { Calls the given consumer for every child window of the given window }
procedure EnumerateChildWindows(Wnd: HWND; Consumer: TWndConsumer); procedure EnumerateChildWindows(Wnd: HWND; Consumer: TWndConsumer);
@ -19,6 +19,7 @@ implementation
type type
{ Wrapper structure to hold the object procedure and pass it as a pointer } { Wrapper structure to hold the object procedure and pass it as a pointer }
PWrapper = ^TWrapper; PWrapper = ^TWrapper;
TWrapper = record TWrapper = record
Consumer: TWndConsumer; Consumer: TWndConsumer;
end; end;

View File

@ -10,28 +10,28 @@ type
TTextWriter = class TTextWriter = class
private private
FStream: TStream; FStream: TStream;
FIdent: cardinal; FIdent: Cardinal;
FWriteIdent: boolean; FWriteIdent: Boolean;
procedure WriteIdent; procedure WriteIdent;
public public
constructor Create(AStream: TStream); constructor Create(AStream: TStream);
constructor CreateFile(const FileName: string); constructor CreateFile(const FileName: String);
destructor Destroy; override; destructor Destroy; override;
procedure NewLine; procedure NewLine;
procedure Write(const str: string); procedure Write(const str: String);
procedure WriteLn(const str: string); procedure WriteLn(const str: String);
procedure WriteString(const str: string); procedure WriteString(const str: String);
property Ident: cardinal read FIdent write FIdent; property Ident: Cardinal read FIdent write FIdent;
property Stream: TStream read FStream; property Stream: TStream read FStream;
end; end;
TDfmWriter = class(TTextWriter) TDfmWriter = class(TTextWriter)
procedure WriteBinaryAsText(Input: TStream); procedure WriteBinaryAsText(Input: TStream);
procedure WriteBoolProp(const Name: string; Value: boolean); procedure WriteBoolProp(const Name: String; Value: Boolean);
procedure WriteColorProp(const Name: string; Value: TColor); procedure WriteColorProp(const Name: String; Value: TColor);
procedure WriteCustomProp(const Name, Value: string); procedure WriteCustomProp(const Name, Value: String);
procedure WriteIntProp(const Name: string; Value: integer); procedure WriteIntProp(const Name: String; Value: Integer);
procedure WriteStringProp(const Name, Value: string); procedure WriteStringProp(const Name, Value: String);
procedure WritePlacement(wnd, parent: HWND); procedure WritePlacement(wnd, parent: HWND);
end; end;
@ -45,7 +45,7 @@ begin
FWriteIdent := True; FWriteIdent := True;
end; end;
constructor TTextWriter.CreateFile(const FileName: string); constructor TTextWriter.CreateFile(const FileName: String);
begin begin
inherited Create; inherited Create;
FStream := TFileStream.Create(FileName, fmCreate); FStream := TFileStream.Create(FileName, fmCreate);
@ -61,8 +61,8 @@ end;
procedure TTextWriter.WriteIdent; procedure TTextWriter.WriteIdent;
var var
s: string; s: String;
i: integer; i: Integer;
begin begin
if FWriteIdent then if FWriteIdent then
begin begin
@ -77,69 +77,69 @@ begin
end; end;
end; end;
procedure TTextWriter.Write(const str: string); procedure TTextWriter.Write(const str: String);
begin begin
WriteIdent; WriteIdent;
FStream.Write(str[1], Length(str)); FStream.Write(str[1], Length(str));
end; end;
procedure TTextWriter.WriteLn(const str: string); procedure TTextWriter.WriteLn(const str: String);
begin begin
Write(str); Write(str);
NewLine; NewLine;
end; end;
procedure TTextWriter.WriteString(const str: string); procedure TTextWriter.WriteString(const str: String);
begin begin
Write(Chr(Length(str)) + str); Write(Chr(Length(str)) + str);
end; end;
procedure TTextWriter.NewLine; procedure TTextWriter.NewLine;
const const
crlf: array [0..1] of char = #13#10; crlf: array [0..1] of Char = #13#10;
begin begin
FStream.Write(crlf[0], 2); FStream.Write(crlf[0], 2);
FWriteIdent := True; FWriteIdent := True;
end; end;
procedure TDfmWriter.WriteBoolProp(const Name: string; Value: boolean); procedure TDfmWriter.WriteBoolProp(const Name: String; Value: Boolean);
const const
s: array [False..True] of string = ('False', 'True'); s: array [False..True] of String = ('False', 'True');
begin begin
WriteCustomProp(Name, s[Value]); WriteCustomProp(Name, s[Value]);
end; end;
procedure TDfmWriter.WriteColorProp(const Name: string; Value: TColor); procedure TDfmWriter.WriteColorProp(const Name: String; Value: TColor);
begin begin
WriteCustomProp(Name, ColorToString(Value)); WriteCustomProp(Name, ColorToString(Value));
end; end;
procedure TDfmWriter.WriteCustomProp(const Name, Value: string); procedure TDfmWriter.WriteCustomProp(const Name, Value: String);
begin begin
WriteLn(Name + ' = ' + Value); WriteLn(Name + ' = ' + Value);
end; end;
procedure TDfmWriter.WriteIntProp(const Name: string; Value: integer); procedure TDfmWriter.WriteIntProp(const Name: String; Value: Integer);
begin begin
WriteCustomProp(Name, IntToStr(Value)); WriteCustomProp(Name, IntToStr(Value));
end; end;
procedure TDfmWriter.WriteStringProp(const Name, Value: string); procedure TDfmWriter.WriteStringProp(const Name, Value: String);
begin begin
WriteCustomProp(Name, '''' + Value + ''''); WriteCustomProp(Name, '''' + Value + '''');
end; end;
procedure BinToHex(Binary, Text: PChar; Count: integer); procedure BinToHex(Binary, Text: PChar; Count: Integer);
const const
HexChars: array[0..15] of char = '0123456789ABCDEF'; HexChars: array[0..15] of Char = '0123456789ABCDEF';
var var
I: integer; I: Integer;
begin begin
for I := 0 to Count - 1 do for I := 0 to Count - 1 do
begin begin
Text^ := HexChars[(byte(Binary[I]) and $F0) shr 4]; Text^ := HexChars[(Byte(Binary[I]) and $F0) shr 4];
Inc(Text); Inc(Text);
Text^ := HexChars[(byte(Binary[I]) and $0F)]; Text^ := HexChars[(Byte(Binary[I]) and $0F)];
Inc(Text); Inc(Text);
end; end;
end; end;
@ -148,11 +148,11 @@ procedure TDfmWriter.WriteBinaryAsText(Input: TStream);
const const
BytesPerLine = 32; BytesPerLine = 32;
var var
MultiLine: boolean; MultiLine: Boolean;
I: integer; I: Integer;
Count: longint; Count: Longint;
Buffer: array[0..BytesPerLine - 1] of char; Buffer: array[0..BytesPerLine - 1] of Char;
Text: array[0..BytesPerLine * 2 - 1] of char; Text: array[0..BytesPerLine * 2 - 1] of Char;
begin begin
Count := Input.Size; Count := Input.Size;
MultiLine := Count > BytesPerLine; MultiLine := Count > BytesPerLine;

View File

@ -48,9 +48,9 @@ type
procedure btnAboutClick(Sender: TObject); procedure btnAboutClick(Sender: TObject);
procedure SaveRCClick(Sender: TObject); procedure SaveRCClick(Sender: TObject);
private private
procedure GenerateDfmFile(const filename, frmname: string; wnd: HWND; procedure GenerateDfmFile(const filename, frmname: String; wnd: HWND;
PasList: TStrings); PasList: TStrings);
procedure GeneratePasFile(const filename, frmname: string; PasList: TStrings); procedure GeneratePasFile(const filename, frmname: String; PasList: TStrings);
procedure EnableSavePas; procedure EnableSavePas;
procedure EnableWndInput; procedure EnableWndInput;
public public
@ -87,7 +87,7 @@ end;
procedure TMainForm.BrowsePasClick(Sender: TObject); procedure TMainForm.BrowsePasClick(Sender: TObject);
var var
s: string; s: String;
begin begin
with SaveDialog1 do with SaveDialog1 do
begin begin
@ -119,7 +119,7 @@ begin
end; end;
procedure TMainForm.GenerateDfmFile(const filename, frmName: string; procedure TMainForm.GenerateDfmFile(const filename, frmName: String;
wnd: HWND; PasList: TStrings); wnd: HWND; PasList: TStrings);
var var
OutStream: TFileStream; OutStream: TFileStream;
@ -132,11 +132,11 @@ begin
b1.Free; b1.Free;
end; end;
procedure TMainForm.GeneratePasFile(const filename, frmname: string; PasList: TStrings); procedure TMainForm.GeneratePasFile(const filename, frmname: String; PasList: TStrings);
var var
title: string; title: String;
fpas: TTextWriter; fpas: TTextWriter;
i: integer; i: Integer;
begin begin
fpas := TTextWriter.CreateFile(filename); fpas := TTextWriter.CreateFile(filename);
try try
@ -177,7 +177,7 @@ end;
procedure TMainForm.SavePasClick(Sender: TObject); procedure TMainForm.SavePasClick(Sender: TObject);
var var
dfmName: string; dfmName: String;
wnd: HWND; wnd: HWND;
s: TStringList; s: TStringList;
begin begin
@ -197,7 +197,7 @@ end;
procedure TMainForm.EnableSavePas; procedure TMainForm.EnableSavePas;
var var
UnitName: string; UnitName: String;
begin begin
UnitName := ChangeFileExt(ExtractFileName(PasFileName.Text), ''); UnitName := ChangeFileExt(ExtractFileName(PasFileName.Text), '');
SavePas.Enabled := IsValidIdent(FormName.Text) and IsValidIdent(UnitName) and SavePas.Enabled := IsValidIdent(FormName.Text) and IsValidIdent(UnitName) and

View File

@ -38,7 +38,7 @@ uses StyleNames, WindowEnumerator;
function GetClassNameAsString(wnd: HWND): String; function GetClassNameAsString(wnd: HWND): String;
var var
class_name: array [0..100] of char; class_name: array [0..100] of Char;
len: Integer; len: Integer;
begin begin
len := GetClassName(wnd, class_name, 100); len := GetClassName(wnd, class_name, 100);
@ -60,11 +60,11 @@ procedure TResults.Savelistdata1Click(Sender: TObject);
var var
f: TextFile; f: TextFile;
n: TTreeNode; n: TTreeNode;
i: integer; i: Integer;
function RemoveTag(const s: string): string; function RemoveTag(const s: String): String;
var var
pos1: integer; pos1: Integer;
begin begin
pos1 := Pos('=', s); pos1 := Pos('=', s);
Result := Copy(s, pos1 + 2, Length(s) - pos1 - 1); Result := Copy(s, pos1 + 2, Length(s) - pos1 - 1);
@ -108,7 +108,7 @@ end;
procedure TResults.GetWinInfoText(wnd: HWND; ParentNode: TTreeNode); procedure TResults.GetWinInfoText(wnd: HWND; ParentNode: TTreeNode);
var var
len: integer; len: Integer;
Text: PChar; Text: PChar;
begin begin
len := GetWindowTextLength(wnd) + 1; len := GetWindowTextLength(wnd) + 1;
@ -189,9 +189,9 @@ end;
procedure TResults.GetWinInfoListData(wnd: HWND; ParentNode: TTreeNode); procedure TResults.GetWinInfoListData(wnd: HWND; ParentNode: TTreeNode);
var var
i, cbcount: integer; i, cbcount: Integer;
node1, node2: TTreeNode; node1, node2: TTreeNode;
itemtext: array [0..300] of char; itemtext: array [0..300] of Char;
begin begin
with TreeView1.Items do with TreeView1.Items do
begin begin
@ -199,11 +199,11 @@ begin
cbcount := SendMessage(wnd, CB_GETCOUNT, 0, 0); cbcount := SendMessage(wnd, CB_GETCOUNT, 0, 0);
for i := 1 to cbcount do for i := 1 to cbcount do
begin begin
SendMessage(wnd, CB_GETLBTEXT, i - 1, longint(@itemtext)); SendMessage(wnd, CB_GETLBTEXT, i - 1, Longint(@itemtext));
node2 := AddChild(node1, 'Item #' + IntToStr(i)); node2 := AddChild(node1, 'Item #' + IntToStr(i));
AddChild(node2, 'Text = ' + itemtext); AddChild(node2, 'Text = ' + itemtext);
AddChild(node2, 'Data = ' + AddChild(node2, 'Data = ' + IntToStr(SendMessage(wnd,
IntToStr(SendMessage(wnd, CB_GETITEMDATA, i - 1, 0))); CB_GETITEMDATA, i - 1, 0)));
end; end;
end; end;
end; end;
@ -233,10 +233,12 @@ var
node2: TTreeNode; node2: TTreeNode;
begin begin
if not Assigned(ChildrenRootNode) then if not Assigned(ChildrenRootNode) then
ChildrenRootNode := Form.TreeView1.Items.AddChild(ParentNode, 'Children information'); ChildrenRootNode := Form.TreeView1.Items.AddChild(ParentNode,
'Children information');
Inc(ChildCount); Inc(ChildCount);
node2 := Form.TreeView1.Items.AddChild(ChildrenRootNode, 'Child #' + IntToStr(ChildCount)); node2 := Form.TreeView1.Items.AddChild(ChildrenRootNode, 'Child #' +
Form.GetWinInfo(integer(wnd), node2); IntToStr(ChildCount));
Form.GetWinInfo(Integer(wnd), node2);
end; end;
procedure TResults.GetWinInfoChildren(wnd: HWND; ParentNode: TTreeNode); procedure TResults.GetWinInfoChildren(wnd: HWND; ParentNode: TTreeNode);