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

Вниз

Массивы Components, Controls. Изменение порядка следования   Найти похожие ветки 

 
DProg   (2003-09-04 16:31) [0]

Можно ли управлять последовательностью компонентов в массивах Components, Controls?


 
Skier   (2003-09-04 16:32) [1]

TComponent.ComponentIndex


 
DProg   (2003-09-04 16:40) [2]

Спасибо. Вопрос вдогонку - изменяется ли в зависимости от этого порядок следования компонентов в DFM при сохранении формы. Если нет, то существует ли способ?


 
Skier   (2003-09-04 16:41) [3]

>DProg (04.09.03 16:40)
Любезный, а самому проверить ?


 
DProg   (2003-09-04 16:45) [4]

Похоже нет... Я уже с обеда проверяю и ничего придумать не могу.


 
Skier   (2003-09-04 16:49) [5]

Цель у тебя какая ?


 
DProg   (2003-09-04 16:58) [6]

Задача довольно сложная, но попробую вырезать требуемый кусочек:

Имеется созданная форма. На ней N компонентов (наследников TControl), причем у каждого установлено Align = alLeft; У каждого компонента в свойстве Tag числа от 0 до N, причем в произвольном порядке. Требуется получить DFM, в которой компоненты следуют в порядке возрастания значений в свойстве Tag.

Примерно так :)


 
Nikolay M.   (2003-09-04 17:02) [7]


> Требуется получить DFM, в которой компоненты следуют в порядке
> возрастания значений в свойстве Tag.

Можно, конечно, сгенерить руками dfm-файл, но, имхо, лучше создавать Control-ы в рантайме, ручками.


 
DProg   (2003-09-04 17:06) [8]

1. DFM генерится через ObjectBinaryToText;
2. Значения Tag в произвольном порядке.

Это обязательно, т.к. задача - часть другой задачи.


 
Skier   (2003-09-04 17:07) [9]

Через ToolsAPI нужно действовать.


 
Skier   (2003-09-04 17:08) [10]


> 1. DFM генерится через ObjectBinaryToText;

А записывается через что ?


 
Skier   (2003-09-04 17:10) [11]

Sorry. Не то.
Пишется в design-time или в run-time ?


 
DProg   (2003-09-04 17:12) [12]

function TForm1.MyWriteForm(PrForm: TForm): string;
var
........
begin
for I := 0 to PrForm.ComponentCount - 1 do
begin
if (PrForm.Components [I] is TImageList) then
TImageList(PrForm.Components[I]).Clear;
end;

pms := TMemoryStream.Create;

for I := 0 to PrForm.ComponentCount - 1 do
begin
if (PrForm.Components [I] is TXMLODataSet) then
TXMLODataSet(PrForm.Components[I]).Active := False;
end;

PrForm.Visible := False;

pms.WriteComponent (PrForm);
pms.Position := 0;

{ Convert Proxy form to text}

pms1 := TMemoryStream.Create;
ObjectBinaryToText (pms, pms1);
pms1.Position := 0;

{ Save text to temp Richedit}

MemSize := pms1.Size;
Inc(MemSize);
Buffer := AllocMem(MemSize);
try
pms1.read(Buffer^, MemSize);
Result := StrPas(Buffer);
finally
FreeMem(Buffer, MemSize);
end;
pms1.Free;
pms.Free;
end;


 
Skier   (2003-09-04 17:13) [13]

>DProg (04.09.03 17:12)
Т.е. ты сам свою форму пишешь и читаешь ? (без IDE) Так ?


 
DProg   (2003-09-04 17:14) [14]

Да


 
Skier   (2003-09-04 17:18) [15]

>DProg (04.09.03 17:14)
Ну тогда всё проще. Перед тем как писать выставил правильно для
нужным компонентов TComponent.ComponentIndex и записал.


 
DProg   (2003-09-04 17:21) [16]

> Skier (04.09.03 17:18)
Не получается. Может мешает Align? порядок следования в DFM не изменяется.


 
ZEE   (2003-09-04 17:24) [17]

>DProg (04.09.03 17:21) [16]
>Может мешает Align? порядок следования в DFM не изменяется.
а может еще и Left у компонентов надо менять
т.е. сначала у всех Align:=false
потом выставляешь Left:=...
а поом Align:=true - только поочереди (слева на права...)


 
Skier   (2003-09-04 17:26) [18]

Используй
TWinControl.DisableAlign
TWinControl.EnableAlign



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
6-58808
leonidus
2003-07-11 11:53
2003.09.18
Отключение щелчков при переходе по ссылкакм в TWebBrowser`е


1-58666
АлексейК
2003-09-08 13:10
2003.09.18
16-Bit сегмент в 32-Bit


6-58817
Akni
2003-07-14 17:54
2003.09.18
Как правильно отсоединить клиента?


14-58840
Knight
2003-08-30 14:45
2003.09.18
Принимаю поздравления


6-58804
Melcor
2003-07-03 08:41
2003.09.18
Как перехватывать пакеты из сети?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский