PDA

View Full Version : Request Screen shot of different banking objects



rj
02-27-2013, 09:58 PM
I am currently making a fletcher, and in order to make it very easy to use I want people to be able to use it anywere they want to. But I need your help in posting .PNG images of banking objects!

Objects Needed:

-Castle wars bank chest
-Duel arena chest
-Lumberidge basement chest
-Varrock booth's


Please give me a screenshot AND the uptext! The screenshot HAS TO BE A .PNG OTHERWISE IT WILL BE DISTORTIED OR USELESS. Thanks,

Preview:

http://i55.tinypic.com/sg39l0.png

Source:

{$I SRL/SRL.Simba}
{$I SRL/SRL/Misc/Debug.Simba}
{$I P07Include.Simba}
var
DsgnForm:TForm;
TLabel0,TLabel1,TLabel2,TLabel3,TLabel4,TLabel5: TLabel;
InfoLabel,ObjectLabel,AreaLabel,FletchLabel,Failsa feLabel,OtherLabel: TLabel;
SpeedLabel:TLabel;
Username,Password: TEdit;
LogCombo,CompassCombo,ObjectCombo,FailsafeCombo,Sp eedCombo: TComboBox;
MethodCombo:TComboBox;
StartButton,UpdateButton: TButton;
//DTM_Fail_1,Col_Fail_1,Col_Fail_2:Integer;
//BankCol,BankTol:Integer;
// BankHue,BankSat:Extended;
X,Y:Integer;
const
default = 'Times New Roman';
Procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
var
veloX,veloY,windX,windY,veloMag,dist,randomDist,la stDist,D: extended;
lastX,lastY,MSP,W,TDist,T: integer;
sqrt2,sqrt3,sqrt5,PDist,maxStep: extended;
begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);

TDist := Distance(Round(xs), Round(ys), Round(xe), Round(ye));
if (TDist < 1) then
TDist := 1;
MarkTime(T);
repeat
if (TimeFromMark(T)>5000) then
break;

dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
if (dist < 1) then
dist := 1;
PDist := (dist/TDist);
if (PDist < 0.01) then
PDist := 0.01;
if (PDist >= 0.15) then
begin
D := (Round((Round(dist)*0.3))/5);
if (D < 20) then
D := 20;
end else if (PDist < 0.15) then
begin
if ((PDist <= 0.15) and (PDist >= 0.10)) then
D := RandomRange(8, 13)
else if (PDist < 0.10) then
D := RandomRange(4, 7);
end;

if (D <= Round(dist)) then
maxStep := D
else
maxStep := Round(dist);

if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
end;

veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;

if (hypot(veloX, veloY) > maxStep) then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;

lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;

if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));

W := (Random((Round(100/MSP)))*6);
if (W < 5) then
W := 5;
W := Round(W*1.2);
wait(W);
lastdist:= dist;
until(hypot(xs - xe, ys - ye) < 1)

if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MMouse(Round(xe), Round(ye), 0, 0);

MouseSpeed := MSP;
end;
Procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,MS: integer;
begin
MS := MouseSpeed;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
GetMousePos(X, Y);
BrakeWindMouse(X, Y, RandomRange(eX-ranX, eX+ranX), RandomRange(eY-ranY,eY+ranY), 8, 5, 10.0 / randSpeed, 15.0 / randSpeed, 10.0 * randSpeed);
MouseSpeed := MS;
end;
Procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
Var
veloX,veloY,windX,windY,veloMag,dist,randomDist,la stDist,step: extended;
lastX,lastY,MSP,W: integer;
sqrt2,sqrt3,sqrt5: extended;
Begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
While hypot(xs - xe, ys - ye) > 1 Do
Begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
If dist >= targetArea Then
Begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
End Else
Begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
If (maxStep < 3) Then
Begin
maxStep:= random(3) + 3.0;
End Else
Begin
maxStep:= maxStep / sqrt5;
End;
End;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
Begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
End;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;

Case Random(50) Of
1..25: W := (MSP + (Random((MSP/4))));
26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
End;
If (W < 1) Then
W := 1;

If (lastX <> Round(xs)) Or (lastY <> Round(ys)) Then
MoveMouse(Round(xs), Round(ys));

step:= hypot(xs - lastX, ys - lastY);
wait(W);
lastdist:= dist;
end;

If (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) Then
MoveMouse(Round(xe), Round(ye));

MouseSpeed := MSP;
End;

Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
Var
randSpeed: extended;
X,Y,X2,Y2,j,Dist,MP: integer;
Begin
j := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
If MP < 0 Then
MP := 1;

randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(j*MP), eX+(j*MP));
Y2 := RandomRange(eY-(j*MP), eY+(j*MP));
SuperWindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := j;
End;
Procedure HumanMoveSlow;
Begin
case random(200) of
1..160: BrakeMMouse(RandomRange(X - 6, X + 6), RandomRange(y - 5, y + 5), 0, 0);
161..190: BrakeMMouse(RandomRange(X - 8, X + 8), RandomRange(y - 7, y + 7), 0, 0);
191..200: BrakeMMouse(RandomRange(X - 10, X + 10), RandomRange(y - 10, y + 10), 0, 0);
End;
End;
Procedure HumanMove;
Begin
case random(200) of
1..160: HumanMMouse(RandomRange(X - 5, X + 5), RandomRange(y - 5, y + 5), 0, 0);
161..190: HumanMMouse(RandomRange(X - 7, X + 7), RandomRange(y - 7, y + 7), 0, 0);
191..200: HumanMMouse(RandomRange(X - 10, X + 10), RandomRange(y - 10, y + 10), 0, 0);
End;
End;
Procedure RandomMouse;
Begin
case random(99) of
1..85: HumanMove;
86..99: HumanMoveSlow;
End;
End;
Function P07_ChooseOptionMultiHuman(Text: TStringArray): Boolean;
Var
WhiteBoxT,BlueBoxT,YellowBoxT,OrangeBoxT,FoundText : String;
OptionTB:TBox;
OptionBoxTPA1: TPointArray;
NumberOfOptions,C,X,Y: Integer;
Begin
FindColors(OptionBoxTPA1, 4674653, P07_MSX1, P07_MSY1, P07_ClientWidth-1, P07_ClientHeight-1);
OptionTB:=getTPABounds(OptionBoxTPA1);
If (Length(OptionBoxTPA1) < 10) Then
Begin
Result:=False;
Exit;
End;
NumberOfOptions:=((OptionTB.Y2-2) - (OptionTB.Y1+21)) / 14;
For C:=0 To (NumberOfOptions-1) Do
Begin
If (OptionTB.Y1+21+(C*15)) > OptionTB.Y1+21+((C+1)*14) Then
Begin
Result:=False;
Break;
End;
WhiteBoxT:=GetTextAtExWrap(OptionTB.X1+2, OptionTB.Y1+21+(C*15), OptionTB.X2-2, OptionTB.Y1+21+((C+1)*14), 0, 5, 1, 16777215, 5, 'P07UpChars');
BlueBoxT:=GetTextAtExWrap(OptionTB.X1+2, OptionTB.Y1+21+(C*15), OptionTB.X2-2, OptionTB.Y1+21+((C+1)*14), 0, 5, 1, 16776960, 5, 'P07UpChars');
YellowBoxT:=GetTextAtExWrap(OptionTB.X1+2, OptionTB.Y1+21+(C*15), OptionTB.X2-2, OptionTB.Y1+21+((C+1)*14), 0, 5, 1, 65535, 5, 'P07UpChars');
OrangeBoxT:=GetTextAtExWrap(OptionTB.X1+2, OptionTB.Y1+21+(C*15), OptionTB.X2-2, OptionTB.Y1+21+((C+1)*14), 0, 5, 1, 4231423, 5, 'P07UpChars');
FoundText:=WhiteBoxT+' '+BlueBoxT+YellowBoxT+OrangeBoxT;
If (P07_ContainsText(FoundText,Text)) Then
Begin
HumanMMouse(RandomRange(OptionTB.X1+2,OptionTB.X2-2),RandomRange(OptionTB.Y1+21+(C*14),OptionTB.Y1+2 1+((C+1)*14)),0,0);
ClickMouse2(mouse_left);
Result:=True;
Exit;
End;
End;
GetMousePos(X,Y);
If Y > 21 Then
HumanMMouse(RandomRange(OptionTB.X1+2,OptionTB.X2-2),RandomRange(Y-10,Y-20),0,0)
Else
HumanMMouse(RandomRange(5,535),RandomRange(350,490 ),0,0);
Result:=False;
End;
Function Bank: Boolean;
Var
tmpCTS,i, L,Counter: Integer;
ObjTPA: TPointArray;
ObjATPA: T2DPointArray;
X,Y,DMCount,Moves: Integer;
Begin
Moves:=0;
DMCount:=0;

tmpCTS := GetToleranceSpeed;
SetColorToleranceSpeed(2);

SetToleranceSpeed2Modifiers(0.00, 0.00);
FindColorsTolerance(ObjTPA, 607067, P07_MSX1, P07_MSY1, P07_MSX2, P07_MSY2, 3);
SplitTPAWrap(ObjTPA, 10, ObjATPA);

SortATPAFromFirstPoint(ObjATPA, Point(MSCX,MSCY));
SetColorToleranceSpeed(tmpCTS);
SetToleranceSpeed2Modifiers(0.02, 0.02);

DMCount:=RandomRange(3,5);
L := High(ObjATPA)
MarkTime(Counter);
For i := 0 To L Do
Begin
MiddleTPAEx(ObjATPA[i], X, Y);
Repeat Begin
Moves:=Moves+1;
RandomMouse;
If (P07_IsUpTextMultiCustom(['Use','Bank', 'ooth'])) Then
Begin
clickmouse2(mouse_Right);
Wait(RandomRange(400, 1000));
P07_ChooseOptionMulti(['Use-q']);
Exit;
End;
End; Until (Moves > DMCount)
If (TimeFromMark(Counter) > 12000) Then
Begin
Break;
End;
End;
Result:=False;
End;
procedure SetSpeed;
begin
case CompassCombo.ITEMINDEX of
0:
Begin
Writeln('Fletching Speed:Slow');
End;
1:
Begin
Writeln('Fletching Speed:Medium');
End;
2:
Begin
Writeln('Fletching Speed:Fast');
End;
End;
End;
procedure SetFailSafeArea;
begin
case FailSafeCombo.ITEMINDEX of
0:
Begin
Writeln('and failsafing at Lumberidge Bank');
End;
1:
Begin
Writeln('and failsafing at Lumberidge Cellar');
End;
2:
Begin
Writeln('and failsafing at Draynor Bank');
End;
3:
Begin
Writeln('and failsafing at Varrock East Bank');
End;
4:
Begin
Writeln('and failsafing at Varrock West Bank');
End;
5:
Begin
Writeln('and failsafing at Edgeville Bank');
End;
6:
Begin
Writeln('and failsafing at Duel Arena');
End;
7:
Begin
Writeln('and failsafing at Castle Wars');
End;
8:
Begin
Writeln('and failsafing at Falador East');
End;
9:
Begin
Writeln('and failsafing at Falador West');
End;
10:
Begin
Writeln('and failsafing at Catherby Bank');
End;
11:
Begin
Writeln('and failsafing at Seers Village Bank');
End;
12:
Begin
Writeln('and failsafing at Nowere');
End;
End;
End;
procedure SetCompass;
begin
case CompassCombo.ITEMINDEX of
0:
Begin
Writeln('facing North');
End;
1:
Begin
Writeln('facing East');
End;
2:
Begin
Writeln('facing South');
End;
3:
Begin
Writeln('facing West');
End;
End;
End;
procedure SetObject;
begin
case ObjectCombo.ITEMINDEX of
0:
Begin
Writeln('at Dark Brown Booth');
End;
1:
Begin
Writeln('at Light Brown Booth');
End;
2:
Begin
Writeln('at Lumberidge Chest');
End;
3:
Begin
Writeln('at CastleWars Chest');
End;
End;
End;
procedure SetLog;
begin
case LogCombo.ITEMINDEX of
0:
Begin
Writeln('Logs');
End;
1:
Begin
Writeln('Oaks');
End;
2:
Begin
Writeln('Willows');
End;
3:
Begin
Writeln('Maples');
End;
4:
Begin
Writeln('Yews');
End;
5:
Begin
Writeln('Magics');
End;
End;
End;
procedure SetMethod;
begin
case MethodCombo.ITEMINDEX of
0:
Begin
Writeln('We are going to Shaft');
End;
1:
Begin
Writeln('We are going to Fletch');
End;
2:
Begin
Writeln('We are going to String');
End;
End;
End;
procedure YourClickProcedure(Sender: TObject);
begin
//ShowMessage('click');
end;
procedure SaveFormInfo(Sender: TObject);
begin
DsgnForm.ModalResult := mrOk;
P07_PlayerName := Username.TEXT
P07_PlayerPass := Password.TEXT
SetMethod;
SetLog;
SetObject;
SetCompass;
SetFailSafeArea;
SetSpeed;
DsgnForm.CLOSE;
end;

procedure InitForm;
begin
//DsgnForm\\
DsgnForm:=TForm.Create(nil);
with DsgnForm do
begin
Caption:='Fast Fletcher 1.0';
Left:=377;
Top:=380;
Width:=280;
Height:=480;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//TLabel0\\
TLabel0:=TLabel.Create(DsgnForm);
with TLabel0 do
begin
Parent:=DsgnForm;
Caption:='RJJ95 2007 Fletcher';
Left:=90;
Top:=15;
Width:=99;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
FletchLabel:=TLabel.Create(DsgnForm);
with FletchLabel do
begin
Parent:=DsgnForm;
Caption:='Fletching settings';
Left:=100;
Top:=110;
Width:=99;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
//TLabel1\\
TLabel1:=TLabel.Create(DsgnForm);
with TLabel1 do
begin
Parent:=DsgnForm;
Caption:='Username';
Left:=3;
Top:=65;
Width:=49;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
//TLabel2\\
TLabel2:=TLabel.Create(DsgnForm);
with TLabel2 do
begin
Parent:=DsgnForm;
Caption:='Password';
Left:=140;
Top:=65;
Width:=47;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
//TLabel3\\
TLabel3:=TLabel.Create(DsgnForm);
with TLabel3 do
begin
Parent:=DsgnForm;
Caption:='Method';
Left:=5;
Top:=140;
Width:=37;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
//TLabel4\\
TLabel4:=TLabel.Create(DsgnForm);
with TLabel4 do
begin
Parent:=DsgnForm;
Caption:='Logs to use';
Left:=135;
Top:=140;
Width:=18;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
AreaLabel:=TLabel.Create(DsgnForm);
with AreaLabel do
begin
Parent:=DsgnForm;
Caption:='Location settings';
Left:=100;
Top:=175;
Width:=18;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
FailsafeLabel:=TLabel.Create(DsgnForm);
with FailsafeLabel do
begin
Parent:=DsgnForm;
Caption:='Location failsafe';
Left:=25;
Top:=245;
Width:=18;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
FailsafeCombo:=TComboBox.Create(DsgnForm);
with FailSafeCombo do
begin
Parent:=DsgnForm;
Left:=110;
Top:=243;
Width:=150;
Height:=15;
//add your items here
Items.Add('Lumberidge Bank');
Items.Add('Lumberidge Cellar');
Items.Add('Draynor Bank');
Items.Add('Varrock East Bank');
Items.Add('Varrock West Bank');
Items.Add('Edgeville Bank');
Items.Add('Duel Arena');
Items.Add('Castle Wars');
Items.Add('Falador East');
Items.Add('Falador West');
Items.Add('Catherby Bank');
Items.Add('Seers Village Bank');
Items.Add('None');
Text := Items[0];
//End items
OnClick:=@YourClickProcedure;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=8;
end;
//TLabel5\\
TLabel5:=TLabel.Create(DsgnForm);
with TLabel5 do
begin
Parent:=DsgnForm;
Caption:='Direction';
Left:=155;
Top:=210;
Width:=43;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
//TEdit7\\
Username:=TEdit.Create(DsgnForm);
with Username do
begin
Parent:=DsgnForm;
Text:='Username';
Left:=53;
Top:=63;
Width:=80;
Height:=21;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
//TEdit8\\
Password:=TEdit.Create(DsgnForm);
with Password do
begin
Parent:=DsgnForm;
Text:='Password';
Left:=190;
Top:=63;
Width:=80;
Height:=21;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
Password.MaxLength:=21;
Password.PasswordChar:=#;
end;
OtherLabel:=TLabel.Create(DsgnForm);
with OtherLabel do
begin
Parent:=DsgnForm;
Caption:='Other Settings';
Left:=100;
Top:=285;
Width:=99;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
SpeedLabel:=TLabel.Create(DsgnForm);
with SpeedLabel do
begin
Parent:=DsgnForm;
Caption:='Fletching Speed';
Left:=70;
Top:=310;
Width:=99;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
SpeedCombo:=TComboBox.Create(DsgnForm);
with SpeedCombo do
begin
Parent:=DsgnForm;
Left:=150;
Top:=308;
Width:=60;
Height:=15;
//add your items here
Items.Add('Slow');
Items.Add('Normal');
Items.Add('Fast');
Text := Items[0];
//End items
OnClick:=@YourClickProcedure;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=8;
end;
//Method\\
MethodCombo:=TComboBox.Create(DsgnForm);
with MethodCombo do
begin
Parent:=DsgnForm;
Left:=47;
Top:=138;
Width:=80;
Height:=15;
//add your items here
Items.Add('Shaft');
Items.Add('String');
Items.Add('Fletch');
Text := Items[0];
//End items
OnClick:=@YourClickProcedure;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=8;
end;
ObjectLabel:=TLabel.Create(DsgnForm);
with ObjectLabel do
begin
Parent:=DsgnForm;
Caption:='Object';
Left:=0;
Top:=210;
Width:=99;
Height:=14;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
ObjectCombo:=TComboBox.Create(DsgnForm);
with ObjectCombo do
begin
Parent:=DsgnForm;
Left:=35;
Top:=208;
Width:=115;
Height:=15;
Items.Add('Booth(DarkBrown)');
Items.Add('Booth(LightBrown)');
Items.Add('Chest(Lumberidge)');
Items.Add('Chest(CastleWars)');
Text := Items[0];
OnClick:=@YourClickProcedure;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=8;
end;
//Log\\
LogCombo:=TComboBox.Create(DsgnForm);
with LogCombo do
begin
Parent:=DsgnForm;
Left:=195;
Top:=138;
Width:=80;
Height:=15;
Items.Add('Logs');
Items.Add('Oak');
Items.Add('Willow');
Items.Add('Maple');
Items.Add('Yew');
Items.Add('Magic');
Text := Items[0];
OnClick:=@YourClickProcedure;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
StartButton:=TButton.Create(DsgnForm);
with StartButton do
begin
Parent:=DsgnForm;
Caption:='Start';
Left:=45;
Top:=400;
Width:=200; //75
Height:=20;
OnClick:=@SaveFormInfo
Font.Size:=8;
end;
UpdateButton:=TButton.Create(DsgnForm);
with UpdateButton do
begin
Parent:=DsgnForm;
Caption:='Update';
Left:=45;
Top:=420;
Width:=200; //75
Height:=20;
Font.Size:=8;
//OnClick:=@SaveFormInfo
end;
//TComboBox12\\
CompassCombo:=TComboBox.Create(DsgnForm);
with CompassCombo do
begin
Parent:=DsgnForm;
Left:=205;
Top:=208;
Width:=70;
Height:=21;
Items.Add('North');
Items.Add('East');
Items.Add('South');
Items.Add('West');
Text := Items[0];
OnClick:=@YourClickProcedure;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=9;
end;
end;

procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;


procedure ShowFormModal;
begin
DsgnForm.ShowModal;
end;


procedure SafeShowFormModal;
var
v: TVariantArray;
begin
SetArrayLength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;


begin
SafeInitForm;
SafeShowFormModal;
end.

Credits to Flight for mouse functions and DannyRs for include