Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработать 16 текстовых форм 
V
    Опции темы
supervladislav
Дата 14.9.2012, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Подскажите , как к данному вопросу можно подойти наиболее рационально ,чтобы не плодить множества if else.
Использую Rad studio 2010, есть ли в rad studio 2010 возможность обработки через коллекции скажем всех текстовых эллементов.
PM MAIL   Вверх
Данкинг
Дата 14.9.2012, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Что такое "текстовая форма" и как её требуется обработать?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 14.9.2012, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Данкинг, за неделю войны с delphi 7 я уже забыл для чего его устанавливал  smile 
Код

timework1.Text

как обработать много таких вот текстовых полей , ой забыл как они называются не во всём ещё разобрался в RAd studio.
PM MAIL   Вверх
supervladislav
Дата 14.9.2012, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Данкинг, хотелось бы сделать что-то вроде вот такого, но не ясно на первых порах как вставить  i в выражение. 
Код

procedure TForm1.FormCreate(Sender: TObject);
 var a:Integer;
 data:array[1..16] of string;
 begin
 for a := 1 to 16 do
 ShowMessage(timedelay+StrToString(i).text);
 end;



Это сообщение отредактировал(а) supervladislav - 14.9.2012, 17:54
PM MAIL   Вверх
Данкинг
Дата 14.9.2012, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



supervladislav, а разве по FindComponent ты вопроса не задавал где-то? Если задавал - то поиск и обращение к компонентам формы осуществляется через него.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 14.9.2012, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Данкинг, FindComponent  вы имеете ввиду функцию языка delphi 2010?

PM MAIL   Вверх
Данкинг
Дата 14.9.2012, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(supervladislav @  14.9.2012,  19:35 Найти цитируемый пост)
вы имеете ввиду функцию языка delphi 2010?

Да она и в D7 есть.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 14.9.2012, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Данкинг, чтобы темы не плодить ,скажите какой книгой по delphi 2010 целесообразднее пользоваться?
PM MAIL   Вверх
Данкинг
Дата 14.9.2012, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(supervladislav @  14.9.2012,  19:40 Найти цитируемый пост)
скажите какой книгой по delphi 2010 целесообразднее пользоваться? 

Не скажу, я уже давно учебников не покупал. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 14.9.2012, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Данкинг, читал чтобы в курс дела войти вот эту книгу 
Основы программирования Delphi 7.pdf
Очень просто ,но крайне сжато.


PM MAIL   Вверх
supervladislav
Дата 15.9.2012, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Данкинг, скажите я не очень понимаю как работает данная продцедура .
Почитал в документации про FindComponent и посмотрел примеры.
Вот один ниже присудствует.

 
Код

with (FindComponent(timedelay) as TComboBox) do
    begin
     visible:=false;
    end;


Я правильно понимаю ,что найдуться все TComboBox с названием timedelay.





PM MAIL   Вверх
Данкинг
Дата 15.9.2012, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Ну да, по идее, попробуй на своей программе.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 15.9.2012, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Данкинг, я имею ввиду ,что названия то уникальны ,в названии нехватает цифры.
timedelay1
timedelay2
timedelay3
timedelay4

Добавлено через 4 минуты и 30 секунд
Продцедура FindComponent так ищет или подругому.
Вобще не очень просто понятно , если продцедура ищет подругому , зачем она вобще нужна.
PM MAIL   Вверх
Данкинг
Дата 15.9.2012, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(supervladislav @  15.9.2012,  12:34 Найти цитируемый пост)
Продцедура FindComponent так ищет или подругому.

Он ищет заданный ей компонент. Что требуется-то сделать в конечном итоге?
Цитата(supervladislav @  15.9.2012,  12:34 Найти цитируемый пост)
Вобще не очень просто понятно , если продцедура ищет подругому , зачем она вобще нужна. 

Что-что? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 15.9.2012, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Вот этот вариант то ,что надо.
но не понятно , как мне считать то ,что записано в поле  timedelay,что после цикла должно идти?

Код

procedure TForm1.FormCreate(Sender: TObject);
 var a:integer;
 begin
 for a := 1 to 16 do begin
 with(Form1.FindComponent('timedelay'+IntToStr(a))) do
 end;
 end;


Данкинг, я х

PM MAIL   Вверх
Rennigth
Дата 15.9.2012, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



supervladislav, весь пост не читал, но как понял ты добиваешься что-то вроде этого?
Код

var
  i: Integer;
  lCmpnt: TComponent;
  lcbtd: TComboBox;
begin
  for i := 1 to 16 do
  begin
    lCmpnt := Form1.FindComponent('timedelay' + IntToStr(i));
    if Assigned(ltd) and (ltd is lcbtd) then
      ///тут делаем что Вам нужно вашими комбиками, например
      lcbtd.TabIndex = i;
  end;
end;


Но!!! Если тебе это как тренировка, то ладно. Но в реальных проектах старайся не использовать такой подход. Навскидку минусы этого подхода:
- При изменении имени комбика все летит к черту.
- FindComponent довольно "тяжелая функция".
- да и много можно еще придумать.



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
supervladislav
Дата 15.9.2012, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Rennigth, а какой альтернативный вариант 

PM MAIL   Вверх
Rennigth
Дата 15.9.2012, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(supervladislav @  15.9.2012,  22:08 Найти цитируемый пост)
Rennigth, а какой альтернативный вариант 

А какова цель-то вообще? 
Тебе надо как-то по умолчанию задать текстовое значение во всех контролах на форме? нужны конкретно ComboBox-ы?


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
supervladislav
Дата 15.9.2012, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Rennigth
Код

lCmpnt: TComponent;
  lcbtd: TComboBox;


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

Добавлено через 6 минут и 50 секунд
Rennigth,мне нужно собрать информацию с них.
PM MAIL   Вверх
Rennigth
Дата 15.9.2012, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(supervladislav @  15.9.2012,  22:20 Найти цитируемый пост)
Скажите я просто не совсем понимаю ,то что выше разве оно не типах должнобыть. 

Нет, это локальные переменные для хранения объектов которые ищем. В данном случае так правильнее делать если не хочешь нарваться на "AccessViolation" или "Invalid Type Cast", т.к. FindComponent может вернуть nil(т.е. ничего) или может вернуть нам не ComboBox, а что-нибудь другое с именем "timedelay1-16".

Добавлено @ 22:32
Кстати, я в примере накосячил(писал просто прям тут)
Код

var
  i: Integer;
  lCmpnt: TComponent;
  lcbtd: TComboBox;
begin
  for i := 1 to 16 do
  begin
    lCmpnt := Form1.FindComponent('timedelay' + IntToStr(i));
    if Assigned(lCmpnt) and (lCmpnt is TComboBox) then
    begin
      lcbtd := TComboBox(lCmpnt);
      lcbtd.TabIndex := i;
      lcbtd.Text := 'test';
    end;
  end;
end;


Это сообщение отредактировал(а) Rennigth - 15.9.2012, 22:41


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
supervladislav
Дата 15.9.2012, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Rennigth, мой вопрос вам почему вы не сделали вот так
Код

type
 lCmpnt: TComponent;
  lcbtd: TComboBox;

Или речь идёт уже о каких то  переменных  где есть какието значения , я не могу понять.

Добавлено через 3 минуты и 54 секунды
Rennigth, минутку я кажется  догнал , в данную переменную просто записывается указатель 
Код

lCmpnt: TComponent;

Но чем же такой приём удобнее?

Да и вот тут ,что за необъявленная переменная  ltd
Код

if Assigned(ltd) and (ltd is lcbtd) then

PM MAIL   Вверх
Rennigth
Дата 15.9.2012, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



supervladislav
Да, это переменные в которые мы временно запоминаем найденные функцией FindComponent компоненты.

Добавлено через 2 минуты и 34 секунды
Цитата(supervladislav @  15.9.2012,  22:34 Найти цитируемый пост)

Да и вот тут ,что за необъявленная переменная  ltd

Сорь, подправил, я просто без делфей...


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
supervladislav
Дата 15.9.2012, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Rennigth,а что всётаки значит  ltd.
PM MAIL   Вверх
Rennigth
Дата 15.9.2012, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(supervladislav @  15.9.2012,  22:34 Найти цитируемый пост)
минутку я кажется  догнал , в данную переменную просто записывается указатель 

 smile

Добавлено через 35 секунд
Цитата(supervladislav @  15.9.2012,  22:42 Найти цитируемый пост)
а что всётаки значит  ltd. 

Это я описался

Добавлено через 3 минуты и 4 секунды
Цитата(supervladislav @  15.9.2012,  22:34 Найти цитируемый пост)
Но чем же такой приём удобнее?

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


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
northener
Дата 16.9.2012, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(supervladislav @  14.9.2012,  15:46 Найти цитируемый пост)
есть ли в rad studio 2010 возможность обработки через коллекции скажем всех текстовых эллементов

Предложу автору почитать где-нибудь о двух свойствах-списках класса TForm. Components и Controls. Возможно они (или один из них) и является той самой "коллекцией", которую он ищет "вслепую", не желая читать учебник по Дельфи.

Это сообщение отредактировал(а) northener - 16.9.2012, 01:04


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
supervladislav
Дата 16.9.2012, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



northener, я  его читаю но назначения некотрых классов мне пока непонятны.
PM MAIL   Вверх
bems
Дата 16.9.2012, 18:45 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Супервладиславу не помогают устные предупреждения об использовании ссылки "репорт"
Может быть читательский билет поможет


--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 17.9.2012, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(supervladislav @  16.9.2012,  16:39 Найти цитируемый пост)
northener, я  его читаю но назначения некотрых классов мне пока непонятны. 

Ну так спрашивай о том, что непонятно в учебнике.
Но внимательно слушай/читай предупреждения модераторов! smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
supervladislav
Дата 20.9.2012, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



northener, ещё один вопрос по коду.
Rennigth, вы немного ошиблись помойму 
не TabIndex ,а itemIndex.
Не очень понятно далее как действовать.
Повторюс  нужно считать всё что есть в 16 формах последовательно в массив.
Я не очень понимаю как мне получить информацию из текстовых полей?

Код

if Assigned(lCmpnt) and (lCmpnt is TComboBox) then
    begin
      lcbtd:= TComboBox(lCmpnt);
     lcbtd.ItemIndex:=i;



Код

procedure TForm1.Form1Create(Sender:TObject);
var
  i: Integer;
  lCmpnt: TComponent;
  lcbtd: TComboBox;
begin

  for i := 0 to 16 do
  begin

    lCmpnt := Form1.FindComponent('timedelay' + IntToStr(i));
    if Assigned(lCmpnt) and (lCmpnt is TComboBox) then
    begin
      lcbtd:= TComboBox(lCmpnt);
     lcbtd.TabIndex:=i;
     
    end;
  end;
end;


PM MAIL   Вверх
northener
Дата 21.9.2012, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(supervladislav @  20.9.2012,  20:02 Найти цитируемый пост)
northener, ещё один вопрос по коду.

Какой вопрос и по какому коду?

P.S. Но если ты ищешь комбобоксы, то лучше устанавливай им ItemIndex, а не Text.
P.P.S. А ещё лучше озвучь наконец задачу, которую ты решаешь.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
supervladislav
Дата 21.9.2012, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



northener, Я по ходу дела перепутал не комбобокс а Tedit.
Delphi 2010 не очень удобно расположена панель инструментов из-за этого путаница.
Спасибо всем ,кто помогал в этом вопросе.
Вот ,что я хотел.
Код

procedure TForm1.Button1Click(Sender: TObject);
var  strs:TStringList;
var
  i: Integer;
  lCmpnt:TComponent;
  lcbtd,: TEdit;

begin

strs:= TStringList.Create;
for i := 1 to 16 do
  begin

    lCmpnt:= Form1.FindComponent('timedelay' + IntToStr(i));
   
    if Assigned(lCmpnt) and (lCmpnt is TEdit)  then
    begin
      lcbtd:= TEdit(lCmpnt);
      strs.Add(lcbtd.Text);
      

     end;
  end;

  strs.SaveToFile('d:\файлпроги\index.txt');
end;


PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1496 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.