Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.10.2011, 21:40   #1
wulf_01
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 57
По умолчанию Динамическое создание Dbedit1

всем привет возникла проблема при динамическом создании Dbedit[i].
немогу присвоить ему datasourse=datasourse1
При нажатии на кнопку "Редактировать" в Dbgrid с таблицы забиваются данный
datafield прописываю а вот как datasourse присвоить не знаю.
заранее спасибо)
wulf_01 вне форума
Старый 15.10.2011, 06:10   #2
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

06:10
Вот если честно не совсем понимаю зачем динамическое создание DBEdit?
В силу того что данный компонент привязывается к определенной таблице, с определенным полем.
В чем смысл динамического создания?
Заранее не известно сколько полей в таблице?
Или вы пишете какое-то универсальное решение?
Потому что если это ни так то это скорее куча геморроя нежели необходимость.
Но это мое мнение. Доберусь до ноута с делфями. Попробую накидать ради академического интереса.
07:30
В общем вот
_tst_.zip
ПО тому что в архиве.
В папке sql лежит скрипт для создания таблицы по которой в программе динамически создаются DBEdit'ы.
Скрипт под MS SQL Server 2005. Под рукой ничего другого не оказалось.
По поводу кода. На каждый DBEdit вешается событие OnEnter.

Пора бы уже и прочесть правила раздела...
А пока - штраф за флуд, за нежелание эти правила соблюдать.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)

Последний раз редактировалось mihali4; 17.10.2011 в 00:32.
rdama вне форума
Старый 15.10.2011, 09:55   #3
wulf_01
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 57
По умолчанию

09:55
Цитата:
Сообщение от rdama Посмотреть сообщение
Вот если честно не совсем понимаю зачем динамическое создание DBEdit?
В силу того что данный компонент привязывается к определенной таблице, с определенным полем.
В чем смысл динамического создания?
Заранее не известно сколько полей в таблице?
Или вы пишете какое-то универсальное решение?
Потому что если это ни так то это скорее куча геморроя нежели необходимость.
Но это мое мнение. Доберусь до ноута с делфями. Попробую накидать ради академического интереса.
Просто я делаю процедуру редактирования.
всего будет около 7 таблиц. Редактироваться они будут по очереди.
к примеру таблица "Пользователь" там 6 полей, Таблица "РС" там 9 полей.
когда заходишь в программу dbedit-ов видно не должно быть потом они по мере выбора таблицы появляются. если создать максимальное число dbedit-ов потом придется постоянно с enable,visible включать и выключать
гемора будет еще больше))
а так выбрал определеную таблицу создал эдиты и потом их уничтожил)
10:12

Цитата:
Сообщение от rdama Посмотреть сообщение
В общем вот
Вложение 43320
ПО тому что в архиве.
В папке sql лежит скрипт для создания таблицы по которой в программе динамически создаются DBEdit'ы.
Скрипт под MS SQL Server 2005. Под рукой ничего другого не оказалось.
По поводу кода. На каждый DBEdit вешается событие OnEnter.
Rdama спасибо)) получилось.
10:17

еще один вопрос по поводу процедуры
Код:
procedure id;
var i:integer;
begin
  
Query1.First;
max:=Query1.Fields[0].AsInteger;
while not Query1.eof do
begin
Query1.Next;

if max < Query1.Fields[0].AsInteger  then
max:=Query1.Fields[0].AsInteger;
end;

Edit1.Text:=inttostr(max);
n:=2;
когда ее гденебудь используешь ругается на query1- неизвестныйй индентификатор
можно было так оставить но этот код нужно будет часто вставлять поэтому хочу записать в процедуру
как ее правильно описать чтобы он видил все элементы???
заранее спасибо

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

Последний раз редактировалось mihali4; 17.10.2011 в 00:36.
wulf_01 вне форума
Старый 15.10.2011, 10:59   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
а так выбрал определенную таблицу создал эдиты и потом их уничтожил)
чем действия отличаются от
Цитата:
выбрал определенную таблицу, включил нужные едиты и потом выключил их.
только тем что для создания надо много действий(Create и установка всех свойств top, left, width, datasource, field, parent, width, height как минимум), для включения только одно(vizible все остальное выполнено заранее при редактировании формы) если очень хочется то еще datasource.
для удаления и выключения число действий одинаково (одно Free/visible). и где проблем больше.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума
Старый 15.10.2011, 11:22   #5
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

Цитата:
Сообщение от wulf_01 Посмотреть сообщение
еще один вопрос по поводу процедуры
Код:
procedure id;
var i:integer;
begin
  
Query1.First;
max:=Query1.Fields[0].AsInteger;
while not Query1.eof do
begin
Query1.Next;

if max < Query1.Fields[0].AsInteger  then
max:=Query1.Fields[0].AsInteger;
end;

Edit1.Text:=inttostr(max);
n:=2;
когда ее гденебудь используешь ругается на query1- неизвестныйй индентификатор
можно было так оставить но этот код нужно будет часто вставлять поэтому хочу записать в процедуру
как ее правильно описать чтобы он видил все элементы???
заранее спасибо
надо писать к чему принадлежит процедура
описание процедуры должно быть

Код:
procedure TForm1.id;
тогда и компоненты увидит. и не забудь прописать ее в type
fbus вне форума
Старый 15.10.2011, 12:11   #6
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Цитата:
надо писать к чему принадлежит процедура
описание процедуры должно быть
Ну тут как говорится все зависит от того что хочешь получить.
Можно сделать как говоришь ты.
А можно и иначе например объявить процедуру как
Код:
procedure id(Query1:(Компонент типа query (TADOQuery, TQuery и т.п));
Можно в процедуру добавить обертку типа.
Код:
procedure id;
var i:integer;
begin
with form1 do
begin  
Query1.First;
max:=Query1.Fields[0].AsInteger;
while not Query1.eof do
begin
Query1.Next;

if max < Query1.Fields[0].AsInteger  then
max:=Query1.Fields[0].AsInteger;
end;

Edit1.Text:=inttostr(max);
n:=2;
end;
Все зависит от фантазии. И назначении кода.
А с какой целью данная процедура написана?
Не проще ли сделать запрос?
Код:
SELECT MAX(поле_по которому ищешь) FROM table
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума
Старый 15.10.2011, 12:40   #7
Surgeon
Форумчанин
 
Регистрация: 04.10.2007
Сообщений: 106
По умолчанию

Цитата:
Сообщение от wulf_01 Посмотреть сообщение
Просто я делаю процедуру редактирования.
всего будет около 7 таблиц. Редактироваться они будут по очереди.
к примеру таблица "Пользователь" там 6 полей, Таблица "РС" там 9 полей.
когда заходишь в программу dbedit-ов видно не должно быть потом они по мере выбора таблицы появляются. если создать максимальное число dbedit-ов потом придется постоянно с enable,visible включать и выключать
гемора будет еще больше))
а так выбрал определеную таблицу создал эдиты и потом их уничтожил)
Универсальный редактор?
Почему не использовать DBgrid? Он обеспечит весь необходимый функционал. Если поля только текстовые без списков выбора есть компонент DBControlGrid.
Пишется в обработчике клика на пункт меню что-то вроде :
Код:
MyCommonDBGrid.DataSet:=MyFirstDataSet;
для второго:
Код:
MyCommonDBGrid.DataSet:=MySecondDataSet;
Ускоряет разработку капитально, если нет каких-то специфических требований. Главное настроить поля наборов данных.
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем
Surgeon вне форума
Старый 16.10.2011, 17:40   #8
wulf_01
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 57
По умолчанию

Всем спасибо.
Подучилось

Еще вопрос
Вот у меня известен Id как по нему из dbgrid отправить всю строку в dbMemo к примеру. знаю что нужен запрос с фильтром но как правильно реализовать???

Пора бы уже и прочесть правила раздела.
Штраф за флуд вроде бы невелик, но за 5 раз как раз набирается на бан...

Последний раз редактировалось mihali4; 17.10.2011 в 00:39.
wulf_01 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание romanzi Общие вопросы Delphi 1 24.08.2011 12:20
Из DBLookupComboBox1 в DBEdit1 Asblue БД в Delphi 3 17.12.2010 18:50
Динамическое создание массива Juggernaut Общие вопросы Delphi 3 20.05.2009 15:13
Динамическое создание объекта Fruit Общие вопросы Delphi 2 16.01.2008 21:18
Динамическое создание объектов LepihinMS Общие вопросы Delphi 18 05.07.2007 23:31