Форум: "Начинающим";
Текущий архив: 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.004 c