Главная страница
    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.008 c
3-58532
MsGuns
2003-08-27 13:16
2003.09.18
QReport. Коррекция отчета перед печатью


6-58807
DimaS
2003-07-17 13:45
2003.09.18
Как зная название учетной записи, запустить виндовый диалог соед.


1-58652
Vitalygavrilov
2003-09-05 10:25
2003.09.18
Как сделать чтобы некакие действия небыли возможны.


7-58943
R4D][
2003-07-04 19:01
2003.09.18
NOP


1-58693
Max_
2003-09-08 12:32
2003.09.18
TPageControl???





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