اگر فقط منظورتون چیدمان هست که نباید کار مشکلی باشه با استفاده از دو حلقه که یکی کنترل کننده Left و دومی کنترل کننده Button Top باشه به سادگی میتونید هرجور Button ها رو بچینید
مثلا تو این مثالی که میزنم تو یک فورم 1000 * 1000 ما 100 Button رو به صورت جدولی میسازیم البته این مثال خیلی ساده و فقط برای نشان دادن چیدمان است
ولی شما میتونید سایز مانیتور یا Resolution صفحه رو بدست بیارید و با تعریف شرط هایی مشخص کنید اگه از حد فضای Button ها بیشتر بود با استفاده از PageControl یه Tab دیگه برای صفحه دوم بسازید
کد:
Var BtnTemp : TButton ;
i,j : integer ;
begin
for I := 0 to 10 do
Begin
for j := 0 to 10 do
Begin
BtnTemp := TButton.Create(nil);
BtnTemp.Name := 'Btn'+IntToStr(i)+IntToStr(j);
BtnTemp.Left := i*100 ;
BtnTemp.Top := j*100 ;
BtnTemp.Caption := IntToStr(i)+' '+IntToStr(j);
BtnTemp.Parent := Form6 ;
BtnTemp.OnClick := TempClick;
End;
End;
end;
حالا اگه بخواهید چیدمان همین Button هارو دوباره تغییر بدید میتونید با این روال این کار رو انجام دهید
کد:
procedure TForm6.Button2Click(Sender: TObject); Var
BtnTemp : TButton ;
i,j : integer ;
begin
for I := 0 to 10 do
Begin
for j := 0 to 10 do
Begin
with (FindChildControl('Btn'+IntToStr(i)+IntToStr(j)) As TButton) do
begin
Name := 'Btn'+IntToStr(i)+IntToStr(j);
Left := i*50 ;
Top := j*50 ;
Caption := IntToStr(i)+' '+IntToStr(j);
Parent := Form6 ;
OnClick := TempClick;
end;
End;
End;
end;
البته با این تابع هم میتونید رزولیشن صفحه رو بدست آورید
کد:
procedure TForm6.Button3Click(Sender: TObject);var
DC: THandle;
Bits: integer;
HRes: integer;
VRes: integer;
begin
DC := GetDC(Handle);
Bits := GetDeviceCaps(DC, BITSPIXEL);
HRes := GetDeviceCaps(DC, HORZRES);
VRes := GetDeviceCaps(DC, VERTRES);
Edit1.Text := Format('%d bit, %d x %d', [Bits, HRes, VRes]);
end;
علاقه مندي ها (Bookmarks)