Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.09.26;
Скачать: [xml.tar.bz2];

Вниз

данные поля на форме   Найти похожие ветки 

 
zergost   (2010-06-29 09:04) [0]

Всем доброго времени суток!!!  Есть ADOQuery с имеющимися в нём полями, так вот суть вопроса. Как перетащить (создать) данные поля на форме в момент активации запроса (или формы)

Сори за тупой вопрос ни как не могу догнать как это сделать…..


 
12 ©   (2010-06-29 09:20) [1]

сформировать контрлы по полям dataseta что ли?


 
zergost   (2010-06-29 09:22) [2]

ну можно сказать и так


 
Jeer ©   (2010-06-29 09:27) [3]


> Как перетащить (создать) данные поля на форме в момент активации
> запроса (или формы)
>


А таблицы недостаточно ?


 
zergost   (2010-06-29 09:37) [4]

Нет, таблица тоже присутствует, но бухи требуют именно поля то есть едиты и т.д.


 
12 ©   (2010-06-29 09:39) [5]

var
i:integer;
E: tEdit;
begin
  ADOQuery1.Open;
  if ADOQuery1.Bof <> ADOQuery1.Eof then
  begin
    for i:= 0 to ADOQuery1.FieldCount - 1 do
    begin
      E:= tEdit.Create(form1);
      E.Parent := form1;
      E.Top := 50 * i;
      E.Name := ADOQuery1.Fields[i].FieldName;
      E.Text := ADOQuery1.Fields[i].AsString;
    end;
  end;
end;


 
RWolf ©   (2010-06-29 09:46) [6]


> 12 ©   (29.06.10 09:39) [5]

E.Show ?


 
zergost   (2010-06-29 09:51) [7]

При таком коде он ведь должен создавать на панели TabSheet1, ведь так только ничего не происходит(((((

ADOQuery1.Open;
  if ADOQuery1.Bof <> ADOQuery1.Eof then
 begin
   for i:= 0 to ADOQuery1.FieldCount - 1 do
   begin
   E:= tEdit.Create(TabSheet1);
     E.Parent := TabSheet1;
     E.Top := 50 * i;
     E.Name := ADOQuery1.Fields[i].FieldName;
     E.Text := ADOQuery1.Fields[i].AsString;

 end;end;


 
zergost   (2010-06-29 09:52) [8]


>
> E.Show ?

где??


 
12 ©   (2010-06-29 09:57) [9]

E:= tEdit.Create(  form1);
     E.Parent := TabSheet1;


 
zergost   (2010-06-29 10:03) [10]

Спасибо большое!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


 
И. Павел ©   (2010-06-29 10:06) [11]

> [0] zergost   (29.06.10 09:04)

ИМХО, лучше руками. Если нужно - создать несколько представлений той же таблицы - стандартное, расширенное и т.д. А иначе выйдет все вперемешку, некрасиво, да и особой разницы от таблицы нет - врят ли это понравится пользователям.


 
12 ©   (2010-06-29 10:08) [12]

> лучше руками.

+1

И через ADOdataset :)


 
Leonid Troyanovsky ©   (2010-06-29 10:30) [13]


> zergost   (29.06.10 09:51) [7]

>    E:= tEdit.Create(TabSheet1);

В чем смысл эдита, если с датасетом он никак не связан?

--
Regards, LVT.


 
12 ©   (2010-06-29 10:37) [14]

а что в этом плохого?

я так иногда делаю, чтоб DBaware не использовать
простые контрлы, заполняются, потом по кнопке обрабатываются , и одним запросом обновляется

 UpdateR.SQL.Text := "exec rnrUpdateRequest "+
                           ":IdR, :IdD, :IdElNet, :IdObj, :NumAbonM, :NumAbonI, :NumMAbonTLF, :NumIAbonTLF ";

 if EditRequest.FieldByName("NumAbonM").AsString <> NumAbonM.text
// если менялось, передадим, иначе пусто, а в хранимке поймем, что не надо менять если передали пусто
  then QSetParam(UpdateR, "IdD", NumAbonM.text)
  else QSetParam(UpdateR, "IdD", sEmpty);


 
zergost   (2010-06-29 11:00) [15]


>
> ИМХО, лучше руками. Если нужно - создать несколько представлений
> той же таблицы - стандартное, расширенное и т.д. А иначе
> выйдет все вперемешку, некрасиво, да и особой разницы от
> таблицы нет - врят ли это понравится пользователям.

Таблиц слишком много, рисовать 26 форм ручками как то очень не охота)))


 
Anatoly Podgoretsky ©   (2010-06-29 11:06) [16]

> Jeer  (29.06.2010 09:27:03)  [3]

Он тебя не поймет.


 
Anatoly Podgoretsky ©   (2010-06-29 11:08) [17]

> 12  (29.06.2010 10:37:14)  [14]

А он потянет? А еще он ленивый формы рисовать не хочет. Предлажи лучше
пригласить программиста.


 
Плохиш ©   (2010-06-29 11:18) [18]


> zergost   (29.06.10 11:00) [15]

Секретурку найми.


 
MsGuns ©   (2010-06-29 11:28) [19]

Есть решение, правда требующее начальное приложение рук и мозга, которое просто и легко решает проблему на ЛЮБЫХ датасетах.

1. Перенос датасет - > контролы
 Пишется библиотечная процедура, которая получает два параметра: TWinControl контейнера с эдитами, чекбоксами и т.д. Она перебирает контролы контейнера и каждому из них ищет соответствие по имени (контрол должен обзываться тем же именем, что и поле датасета или содержать это имя в своем имени после префикса например). Дальще определяет класс контролы и помещает преобразованное (если нужно) значение поля в контрол.
2. Чтобы не "мучиться" с дизайном формы создается еще одна процедура, которая перебирает поля датасета и создает динамически соотв. контролы на пустой форме, красиво их располагает и выравнивает. Имена создаваемым котнролам дает в соответствии с именами полей, надписи - по титулам колонок сетки или св-ву DysplayName полей датасета. Чтобы можно было пользоваться процедурой 1)

При разработке новых форм просто вызывается процедура 2), а затем контролы заполняются вызовом процедуры 1)

Всего две строчки кода ,)


 
zergost   (2010-06-29 11:59) [20]

Если можно поподробней, с примерами желательно.


> 1. Перенос датасет - > контролы
>  Пишется библиотечная процедура, которая получает два параметра:
>  TWinControl контейнера с эдитами, чекбоксами и т.д. Она
> перебирает контролы контейнера и каждому из них ищет соответствие
> по имени (контрол должен обзываться тем же именем, что и
> поле датасета или содержать это имя в своем имени после
> префикса например). Дальще определяет класс контролы и помещает
> преобразованное (если нужно) значение поля в контрол.
> 2. Чтобы не "мучиться" с дизайном формы создается еще одна
> процедура, которая перебирает поля датасета и создает динамически
> соотв. контролы на пустой форме, красиво их располагает
> и выравнивает. Имена создаваемым котнролам дает в соответствии
> с именами полей, надписи - по титулам колонок сетки или
> св-ву DysplayName полей датасета. Чтобы можно было пользоваться
> процедурой 1)


Блин ребят да что вы до меня пристали я не программист.... да могу писать мелкие программки и всё. на что то крупное не хватает ни времени ни сил ни знаний, вы себя вспомните когда только начинали программки писать каково вам было???? ну а если честно 26 таб мне не влом нарисовать просто после этих 26 появятся ещё 10 и ещё и что предлогаете мне каждую таб рисовать мне кажется это глупо, по крайней мере времени на доработку будет занимать много.  Что касается программера нормального пригласить мне сказали х... тебе денег нет.

Ни кого не хотел обидеть!

я понял)))
!
>
> Он тебя не поймет.


 
Jeer ©   (2010-06-29 12:10) [21]


> Блин ребят да что вы до меня пристали я не программист.


Зачем тогда вопросы здесь задаешь ?

Вердикт: научиться, нанять, бросить.


 
zergost   (2010-06-29 12:13) [22]

Учусь))))) Нанять не могу)))) Бросить тоже)))


 
Anatoly Podgoretsky ©   (2010-06-29 12:25) [23]

> zergost  (29.06.2010 12:13:22)  [22]

Нанять не могу))))  - денег нет
Бросить тоже))) - денег нет


 
zergost   (2010-06-29 12:31) [24]

почти ;-)


 
zergost   (2010-06-29 12:34) [25]

кстати не подскажите что за ошибка

A component named num already exist

  if ADOQuery1.Eof  then
 begin
   for i:= 0 to ADOQuery1.FieldCount - 1 do
   begin
   E:= tEdit.Create(TabSheet1);
     E.Parent := TabSheet1;
     E.Top := 25 * i;
     E.Name := ADOQuery1.Fields[i].FieldName;
      \\ выскакивает вот здесь
     E.Text := ADOQuery1.Fields[i].AsString;
     E.Show;
end;end;


 
Плохиш ©   (2010-06-29 12:44) [26]


> zergost   (29.06.10 11:59) [20]
> Блин ребят да что вы до меня пристали

Вообще-то ты сам пришёл

> я не программист

Наими программиста

> zergost   (29.06.10 12:34) [25]
>
> кстати не подскажите что за ошибка
>
> A component named num already exist

На англо-русский словарь тоже денег нет?

Перевожу для нищих и немощных - нельзя создать больше одного компонента с одним именем.

PS. Перед созданием нужно удалить все ненужные и до этого созданные.


 
И. Павел ©   (2010-06-29 12:46) [27]

> A component named num already exist

Компонент с именем "num" уже есть, а вы пытаетесь создать второй, с тем же именем:

> E.Name := ADOQuery1.Fields[i].FieldName;


 
Anatoly Podgoretsky ©   (2010-06-29 13:04) [28]

> zergost  (29.06.2010 12:31:24)  [24]

Ну конечно, я просто опустил, что тут еще и учиться приходится.


 
Sergey13 ©   (2010-06-29 13:41) [29]

> [20] zergost   (29.06.10 11:59)

Всего и делов то, что подойти к бухам и доходчиво объяснить, что системный подход к централизованной обработке информации не применим к раздробленным объектам на форме, т.к. противоречит восемнадцатому закону Паскаля-Кодда. Поэтому все модные давно пользуются специальными штучками (из-за границы между прочим) для концентрирования данных и экономии экранных пикселей от выгорания.

После этого они умолять тебя будут использовать грид.
8-)


 
zergost   (2010-06-29 13:46) [30]


> Sergey13 ©

Спасибо!!! так и сделаю!!!!

С вашей помощью первая часть проги закончена теперь буду думать как её обрабатывать))))))

Спасибо всем большое!!!


 
MsGuns ©   (2010-06-29 19:57) [31]

>Sergey13 ©   (29.06.10 13:41) [29]
>После этого они умолять тебя будут использовать грид.

Опять ты за свое, еретИк :)


 
Sergey13 ©   (2010-06-30 09:48) [32]

> [31] MsGuns ©   (29.06.10 19:57)

Учение Маркса всесильно, потому что оно верно. (с) В.И.Ленин
8-)


 
Anatoly Podgoretsky ©   (2010-06-30 13:43) [33]

> Sergey13  (30.06.2010 09:48:32)  [32]

Он не Маркс он христопродавец.



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

Форум: "Начинающим";
Текущий архив: 2010.09.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.003 c
15-1277890599
brother
2010-06-30 13:36
2010.09.26
Бесшумная система охлаждения


15-1277813120
oldman
2010-06-29 16:05
2010.09.26
Самокат (перлы)


2-1278137781
linuxoid
2010-07-03 10:16
2010.09.26
как загрузить данные из access в treeview?


6-1218676192
piople
2008-08-14 05:09
2010.09.26
[ISAPI] Проблема ограничения длинны загружамемого контента


15-1277719693
SD Software
2010-06-28 14:08
2010.09.26
Протестируйте программу пожалуйста





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