Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизДобавление компонент на форму Найти похожие ветки
← →
Дмитрий (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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.073 c