Sample
Гость
|
|
« : 22-04-2004 11:02 » |
|
|
|
|
Записан
|
|
|
|
x77
Команда клуба
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #1 : 26-04-2004 17:07 » |
|
а что, в билдере Edit[1] эквивалентно Edit1 ? я просто не знаю сишного синтаксиса, но по-моему, даже в си такие извраты не проходят.
если я правильно понял, у тебя на форме куча полей ввода (Edit1, Edit2, ..., EditN), текст которых надо положить в соотв. ячейки грида. проблема в том, что ты к ним неправильно обращаешься. в дельфях это выглядело бы так:
Form1.StringGrid1.Cells [0, i] := (Form4.FindComponent ('Edit' + IntToStr (i)) as TEdit).Text;
функция FindComponent вернёт тебе компонент (т.е. объект) по его имени. имя это ты получаешь, как 'Edit' + IntToStr (i) { опять же, не знаю, как в билдере перевести целое в строку, скорее всего, так же }. ну и всё, собственно. компонент этот надо привести к нужному типу, отсюда - ... as TEdit. и дальше уже работать с его свойством.
|
|
|
Записан
|
|
|
|
Never
|
|
« Ответ #2 : 29-04-2004 08:53 » |
|
Sample, я тебе тут по быренькому проверила проход по Эдитам, правда выгнала их значения в листбокс. Работет. Думаю как его вогнать в твой Стринг Грид сам сообразишь, да?
{ int i; for (i=0;i<ComponentCount ;i++) if (dynamic_cast<TEdit*>(Components )) ListBox1->Items ->Add (dynamic_cast<TEdit*>(Components )->Text); }
Короче- фишка в чем: В билдере есть список всех компонентов. Ты их считаешь все с помощью ComponentCount. В твоем случае это надо сделать для формы4. Дальше циклом проходишь по всем компонентам выбирая из них те, которые можно привести к типу Эдит. И загоняешь куда тебе нужно текст из этих самых компонетнов, которые подходят под Эдит, т.е. на деле из самих Эдитов. Ой, кажется не очень понятно сказала!
|
|
|
Записан
|
не умеете летать- не мучайте метлу!
|
|
|
x77
Команда клуба
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #3 : 29-04-2004 09:01 » |
|
Never, даже мне понятно а что, в билдере FindComponent не работает?
|
|
|
Записан
|
|
|
|
Never
|
|
« Ответ #4 : 29-04-2004 10:28 » |
|
x77, издеваешься? Ты знаешь- я насчет FindComponent просто без понятия. Как о многом, в общем-то. Может и работает, только я его не знаю.
|
|
|
Записан
|
не умеете летать- не мучайте метлу!
|
|
|
Never
|
|
« Ответ #5 : 29-04-2004 10:38 » |
|
Гы... x77, а как твоя строка избегает того, чтобы зайти 2 раза в один и тот же компонент? Не поняла...
|
|
|
Записан
|
не умеете летать- не мучайте метлу!
|
|
|
x77
Команда клуба
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #6 : 29-04-2004 10:39 » |
|
Never, я не издеваюсь. я не знаю билдер. но поскольку это во многом пародия на дельфи, конструкции и логика работы там совпадают. ты ищешь все компоненты, приводишь их к опр. типу, и если это удалось - работаешь с компонентом дальше. есть другой вариант: у формы есть метод: FindComponent, который по имени компонента возвращает сам компонент или nil, если такового не нашлось. когда у тебя есть 20 полей ввода, Edit1..Edit20, можно перебрать только их этой функцией. для этого формирует имя компонента как 'Edit' + IntToStr (i), и работаем с полученным компонентом. реально эти два подхода ничем не отличаются, т.к. FindComponent сам перебирает компоненты. просто сумничать решил
|
|
|
Записан
|
|
|
|
Never
|
|
« Ответ #7 : 29-04-2004 10:46 » |
|
А , я не въехала, что ты им номер цепляешь... Т.е. если они все имеют нормальные имена, а не порядковые, то ты их так не пройдешь?
|
|
|
Записан
|
не умеете летать- не мучайте метлу!
|
|
|
Sample
Гость
|
|
« Ответ #8 : 29-04-2004 10:50 » |
|
{ int i; for (i=0;i<ComponentCount ;i++) if (dynamic_cast<TEdit*>(Components )) ListBox1->Items ->Add (dynamic_cast<TEdit*>(Components )->Text); }
Never биг сенкс!! работает!
|
|
|
Записан
|
|
|
|
x77
Команда клуба
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #9 : 29-04-2004 10:55 » |
|
Never, нет, это имеет смысл только для компонентов с заранее известным именем.
на самом деле, вариантов масса. например, у каждого edit'а можно выставлять свойство Tag, которое, соб-но, и предназначено для таких вот вещей. и в переборе проверять, если Tag = 1, то приводим к Edit и пишем, если не равно - идём дальше.
|
|
|
Записан
|
|
|
|
Never
|
|
« Ответ #10 : 29-04-2004 10:58 » |
|
x77, Ну да, в это я въехала, слава Богу. А то за последние несколько дней, а уж было решила, что я совсем бум-бум, спасибо Бейсику. Sample,
|
|
|
Записан
|
не умеете летать- не мучайте метлу!
|
|
|
|