Главная страница
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.013 c
1-15617
Lexer
2003-01-29 11:16
2003.02.06
Перевод Dos-кодировки в Win


1-15587
Zloy
2003-01-29 01:19
2003.02.06
для запуска проги использую следующую конструкцию:


4-15995
exchoper
2002-12-24 12:02
2003.02.06
Увеличение SOMAXCONN


1-15533
first_aid
2003-01-27 06:00
2003.02.06
Вопрос к тем кто использует в своих программах темы Win XP.


6-15799
Stimo
2002-12-10 21:47
2003.02.06
TServerSocket TClientSocket отсутствуют в Delphi 7