Вниз
Скачать: CL | DM;

Alignment   Найти похожие ветки 

← →
eLVik ©   (2003-01-23 09:37) [0]

Здравствуйте, МАСТЕРА!
В дизайн-тайм часто использую инструмент ALIGNMENT PALLETE из меню VIEW. Есть ли способ применять его к элементам управления, которые создаются в ран-тайм.

Спасибо за внимание!


← →
Chubais ©   (2003-01-23 11:09) [1]

АААААААААААААААААА!!!!!!!!!!!!


← →
eLVik ©   (2003-01-23 12:36) [2]

Что, неужели всё так безнадёжно. Похоже придётся ручками выставлять width и height, left и top :( ...


← →
eLVik ©   (2003-01-23 13:18) [3]

Люди... не молчите, плиз!!!
Может компонент какой-то есть, dll-ка, или API... хоть что-нибудь???


← →
Skier ©   (2003-01-23 13:41) [4]

function AlignControlsHorizontally(
const AAlignment: THorizontalAlignmentType): Boolean;
var
ii : Integer;
AMinimum : Integer;
AMaximum : Integer;
ACenter : Integer;
ASum : Integer;
AAverage : Integer;
ARect : TRect;
AList : TList;
begin
Result := False;
if ControlCount = 0 then Exit;
case AAlignment of
hatNoChange : Exit;
hatLeftSides : begin
if ControlCount <= 1 then Exit;
AMinimum := Controls[0].Left;
for ii := 0 to ControlCount - 1 do begin
if Controls[ii].Left < AMinimum then AMinimum := Controls[ii].Left;
end; //for
for ii := 0 to ControlCount - 1 do Controls[ii].Left := AMinimum;
Result := True;
end; //hatLeftSides
hatCenters : begin
if ControlCount <= 1 then Exit;
ASum := 0;
for ii := 0 to ControlCount - 1 do begin
ACenter:=(2 * Controls[ii].Top + Controls[ii].Height) div 2;
ASum := ASum + ACenter;
end; //for
AAverage := ASum div ControlCount;
for ii := 0 to ControlCount - 1 do begin
ACenter := (2 * Controls[ii].Top + Controls[ii].Height) div 2;
if ACenter > AAverage then Controls[ii].Top := Controls[ii].Top - (ACenter - AAverage)
else Controls[ii].Top := Controls[ii].Top + (AAverage - ACenter);
end; //for
Result := True;
end; //hatCenters
hatRightSides : begin
if ControlCount <= 1 then Exit;
AMaximum := Controls[0].Left + Controls[0].Width;
for ii := 0 to SelControlCount - 1 do begin
if Controls[ii].Left + Controls[ii].Width > AMaximum then
AMaximum := Controls[ii].Left + Controls[ii].Width;
end; //for
for ii := 0 to ControlCount - 1 do
Controls[ii].Left := Controls[ii].Left + (AMaximum - (Controls[ii].Left + Controls[ii].Width));
Result := True;
end; //hatRightSides
end; //case
end;


откуда ты будешь брать ControlCount и Controls
решать тебе.
для вертикального выравнивания переделать не сложно.


← →
eLVik ©   (2003-01-29 11:08) [5]

Спасибо



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
6-15779
Kon2002
2002-10-30 13:34
2003.02.06
WinXP+Internet


14-15856
pave1
2003-01-15 13:53
2003.02.06
Работа с Excel`em


1-15678
Noname Master
2003-01-27 12:10
2003.02.06
Точка вместо запятой


1-15651
Максон
2003-01-29 16:24
2003.02.06
как сделать что б при нажатии кнопки на форме, она сворачивалась


7-15964
opoloXAI
2002-11-23 18:56
2003.02.06
ComPort для терминал-клиента




   Наверх