Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Добавление компонент на форму   Найти похожие ветки 

 
Дмитрий   (2012-03-03 12:32) [0]

Извините за ламерский возможно вопрос.
Никак не могу разобраться со следующим вопросом:

В ручную добавляю компоненты на форму. Пример кода:


  TLabel* _label = new TLabel(this);
  _label->Caption = "1";
  _label->Parent = this;
  _label->Align = alTop;

  _label = new TLabel(this);
  _label->Caption = "2";
  _label->Parent = this;
  _label->Align = alTop;


На форме получаю сверху формы компонент с Caption = "2", а под ним компонент с Caption = "1".

Если воспользоваться редактором и проделать все точно самое в ручную, то получим наверху компонент с Caption = "1".

Как мне добиться того же самого ??


 
sniknik ©   (2012-03-03 12:48) [1]

ты форумы не перепутал? тебе к С-шникам/подобиям языкам нужно. (=, new, this)


 
Дмитрий   (2012-03-03 12:55) [2]

Хорошо. Перепишу так:


var
  _label : TLabel;

 _label = TLabel.Create(self);
 _label.Caption = "1";
 _label.Parent = Self;
 _label.Align = alTop;

 _label =  TLabel.Create(self);
 _label.Caption = "2";
 _label.Parent = this;
 _label.Align = alTop;


Так что нибудь меняется по сути вопроса ?
или тут нельзя задавать вопросы по VCL ?


 
sniknik ©   (2012-03-03 13:20) [3]

> Так что нибудь меняется по сути вопроса ?
конечно, т.к. ТАК этот код работает (если исправить еще одну "несовместимость" конечно)

> или тут нельзя задавать вопросы по VCL ?
можно, почти все можно, неважно по чему, главное по тому что показано и в нужном разделе.
а вот показывать одно, а спрашивать про другое оно как бы... вранье однако.
или извинятся за ламеризм и писать в основную, вместо начинающих... это вообще по другому называется.


 
Дмитрий   (2012-03-03 13:53) [4]

Ну понятно. Извините, если обидел твое самолюбие.
Лучше бы помог, а читал мне мораль.

Други, если можете помогите пожайлуста.


 
QAZ   (2012-03-03 14:09) [5]

а догадаться что что их позиция аналогична порядку создания не?


 
Дмитрий   (2012-03-03 14:12) [6]

Да конечно это возможно.
Но команда на создания компонент приходит хаотично из внешней среды.
А мне нужно чтобы компонент, который был создан первым и оставался на форме первым, а не становился в стек.


 
QAZ   (2012-03-03 14:15) [7]

Удалено модератором


 
sniknik ©   (2012-03-03 14:26) [8]

> Лучше бы помог, а читал мне мораль.
я и помог... вот в следующий раз, если вдруг прислушаешься и задашь адекватно... подскажу решение.
вообще то элементарно, но как заметил, те кто, абы как спрашивает, также абы как думает.


 
Дмитрий   (2012-03-03 14:29) [9]


> вдруг прислушаешься и задашь адекватно... подскажу решение.

Извини, конечно. А в чем неадекватность вопроса ?
Вопрос нормальный вроде бы.

Ну конечно я перепутал тему, но для меня все равно какой язык программирования. Начинал с Object Pascal, потом очень заразился C++, так что ничего для себя криминального не вижу.

Так что если можешь, то подскажи.


 
Дмитрий   (2012-03-03 14:30) [10]


> тогда какого фака ты всем ставиш _label.Align = alTop;
> если сверху нужен только первый?
> да еще и предки разные


Про предков я ничего не понял.
А  _label.Align = alTop; ставлю, что так на форме они должны располагаться занимая верхнюю часть формы.

Сверху нужен не первый, а кто первый помещен, тот первым на форме сверху отображается и т.д.


 
Дмитрий С ©   (2012-03-03 14:33) [11]

нижнему после всего сделай Top := MaxInt может поможет


 
Дмитрий   (2012-03-03 14:42) [12]


> нижнему после всего сделай Top := MaxInt может поможет
>
>


Интересный подход и действительно работает. Спасибо.
скорее всего так и делает редактор. У компонента же Top назначается когда он помещен на форму мышкой, а потом установлением параметра Align.

Все стало понятно. Спасибо.


 
sniknik ©   (2012-03-03 14:43) [13]

> Про предков я ничего не понял.
->
> Но команда на создания компонент приходит хаотично из внешней среды.
> self

как написано, так тебя и понимают. так и ответы дают.


 
sniknik ©   (2012-03-03 14:45) [14]

> Интересный подход
очевидный подход, стоило только задаться мыслью "чем определяется положение компонента?".

кстати при добавление не мигает?


 
Дмитрий   (2012-03-03 14:49) [15]

При таком коде:



 for (int i = 0; i < 10; i++) {

_label = new TLabel(this);
_label->Caption = "ddddddddddddddddddddddddddddddddddddddd";
_label->Parent = this;
_label->Align = alTop;
_label->Top = MaxInt;
Application->ProcessMessages();
Sleep(500);
  }



Морганий не замечано.
Правда машина мощная.


 
sniknik ©   (2012-03-03 14:55) [16]

ставить положение сначала в 0, и менять его после... наверняка где нибудь приведет к "помаргиванию".


 
Дмитрий   (2012-03-03 15:03) [17]


> ставить положение сначала в 0, и менять его после... наверняка
> где нибудь приведет к "помаргиванию".


Хорошо. Буду ставить значение Top сразу после создания компонента.


 
QAZ   (2012-03-03 15:15) [18]

Удалено модератором


 
Дмитрий   (2012-03-03 15:21) [19]


> ахаха
> нуда,только на мощьных машинах 2 операции в секунду не вызывают
> морганий :)))))

Зря смеешься.
Мне приходиться работать на таких машинках, процессор 400Мгц и памяти 256 метров с медленными флешками, так вот если у тебя свеп заработал, то можно иногда видеть на графическом интерфейсе как отрабатывают последовательно сообщения :) :) :)


 
Anatoly Podgoretsky ©   (2012-03-03 17:12) [20]


> потом очень заразился C++,

Это последствия


 
QAZ   (2012-03-03 18:02) [21]

Удалено модератором


 
Дмитрий   (2012-03-03 19:28) [22]


> з.ы. нормальному человеку работающему на такой технике,даже
> в голову бы не пришла такая идея с лейблами,когда есть листбокс
> например


А ты уж крайне не профессионально оцениваешь задачу, не знаю полного описания.

Вот на таких доброжелателях и строятся слухи, домыслы и все остальное. Как бабка.

А то, что ты хамишь не известному тебе человеку, говорит уже о многом, например о неполноценности.


 
QAZ   (2012-03-03 20:17) [23]

Удалено модератором



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

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.052 c
15-1333312206
Юрий
2012-04-02 00:30
2013.03.22
С днем рождения ! 2 апреля 2012 понедельник


15-1352665803
Юрий
2012-11-12 00:30
2013.03.22
С днем рождения ! 12 ноября 2012 понедельник


8-1227079093
Andrey_ka
2008-11-19 10:18
2013.03.22
как заставить окно перерисовываться?


2-1346908916
Eeuwige Rouw
2012-09-06 09:21
2013.03.22
Сохранение изображений


15-1334595190
Cyberden
2012-04-16 20:53
2013.03.22
Помогите написать программу!