Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.06;
Скачать: 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 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
7-15974
FoxM
2002-11-27 19:38
2003.02.06
Поместить экран в файл


4-16002
Chubais
2002-12-24 16:23
2003.02.06
Как ограничить клиентскую область главной MDI формы?


3-15442
Stenkz
2003-01-20 09:45
2003.02.06
Перемещение по визуальным компонентам при нажатии клавиши


1-15746
Brain
2003-01-24 17:42
2003.02.06
Font ы в свойствах


3-15530
Ламер
2003-01-21 14:55
2003.02.06
Как связать обработчик событий с идентификатором?