Текущий архив: 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.45 MB
Время: 0.009 c