Главная страница
    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.45 MB
Время: 0.009 c
3-15410
atmamont
2003-01-20 00:54
2003.02.06
корректный перенос данных MSSQL


7-15954
Александр
2002-12-01 11:15
2003.02.06
Работа с мышкой и клавой


1-15692
LongIsland
2003-01-27 15:44
2003.02.06
Треклятый Access violation


1-15636
Anton
2003-01-29 13:23
2003.02.06
Чем отличаются Application.Terminate; и Application.Destroy;


14-15873
M4
2003-01-12 13:39
2003.02.06
Собирается команда...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский