Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
8-15761
Rom@n
2002-10-23 08:06
2003.02.06
Графика


1-15696
Anton
2003-01-27 15:25
2003.02.06
Какая комбинация быстрее


1-15660
Avsam
2003-01-29 16:04
2003.02.06
TIniFile, ограничения на INI


6-15780
dkDimon
2002-12-12 22:54
2003.02.06
Мыло


3-15518
Stenkz
2003-01-20 08:36
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский