Главная страница
    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.48 MB
Время: 0.009 c
11-58607
Nwm
2003-01-06 10:15
2003.09.18
Иконку из Imagelist в ТKOLMainMenu, без всяких там... штучек.


3-58543
prorok2
2003-08-27 14:25
2003.09.18
Сохранение форматированного текста в поле таблицы


8-58787
Stager
2003-05-18 20:04
2003.09.18
Простейшая работа с MP3


14-58905
Теркин Вася
2003-08-31 23:45
2003.09.18
Программа для администриования компьютерного клуба


1-58664
AlexandrKu
2003-09-05 07:21
2003.09.18
Отчет в MS Word





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