Погуглил! Получается что придется копировать все процедуры в новые, которые с onKeyPress? Во общем посоветуйте где найти хорошую инфу по onKeyPress, в инете только ссылки на форумы где все расплывчато!
Member
Статус: Не в сети Регистрация: 04.12.2005 Откуда: Е-бург Фото: 0
Всем доброго времени суток! сижу делаю клиентское приложение к бд, на делфи - и застрял вот с чем, есть две таблицы:
Код:
CLIENT с полями ID NAME ADRESS PHONE_FAX
и
Код:
ORDERS, соответственно с ID ID_CLIENT ID_STUFF ID_TOVAR DATA PRICE
Хочется, чтобы при вводе данных в таблицу ORDERS в поле ID_CLIENT выпадающим списком можно было выбрать фамилии клиентов из таблицы CLIENT. Таблицы выводятся на форму через DBGrid. Пробовал делать вот по этому примеру, но почему-то в итоге ничего не выводится, вместо ID_CLIENT пустое поле. Делал так: в таблице ORDERS в свойствах поля ID_CLIENT ставил
Код:
FieldKind fkLookup KeyField ID_CLIENT LookupKeyField ID LookupresultField Name
и в итоге нефига. Что и где я делаю не так ? Подскажите, если не затруднит - буду очень признателен!
Member
Статус: Не в сети Регистрация: 01.12.2002 Фото: 0
HotGuy, ищи в инете книжку Библия Delphi Михаила Фленова. В ней рассматривается пример создания телефонного справочника, в котором используется подстановка из других таблиц. Или кури готовые примеры из Delphi.
Member
Статус: Не в сети Регистрация: 04.12.2005 Откуда: Е-бург Фото: 0
Crash уже нашёл, надо было всего-то добавить отдельное lookup поле само в себя значение не вставлялось... Теперь надо сделать автоматическое присвоение номеров для клиентов и тд, и будет почти готово
Если у кого есть время и желание-помогите разобраться. Проблема: есть прога с кучей форм, при закрытии остается в памяти Финализейшн прописывал-но непомогло, посему и просьба-накидайте прогу чтобы формы по кнопке появлялись(штуки три достаточно, т.к. с двумя все нормально работает и без финализейшн), родитель приэтом закрывался. ну и чтобы по крестику всё это из памяти ушло.
Member
Статус: Не в сети Регистрация: 01.12.2002 Фото: 0
Alek(S), В этом плане хорошим тоном является создание форм динамически: Project -> Options и переместить все, кроме главной, формы из Auto-create forms в группу в Available forms. Далее вызывать формы динамически, т.е. примерно так:
var Form2 : TForm2; begin Form2:=TForm2.Create(Self); Form2.ShowModal; Form2.Free; end;
Это даёт 100-процентную гарантию освобождения системных ресурсов формой при ее закрытии.
Crash ShowModal-не катит. Создайте проект-если не затруднит. нажимаем на кнопку на форме1-появляеться Форма2 и форм1 закрываеться, на форме 2 кликаем кнопку-закрываеться Форм2 и открывается Форм3. закрываем форм3-завершаеться прога. Буду черезмерно благодарен-жили бы поближе угостил бы пивом/соком
Member
Статус: Не в сети Регистрация: 28.05.2007 Откуда: Санкт-Петербург
Alek(S) А вы при открытии новой формы старую не закрывайте, а просто скрывайте. Ну а при закрытии третьей - Application.Terminate Может, такой вариант подойдёт?
ToSHiCнадо имеено много форм. Зеро кудысь Application.Terminate прописать? в финализейшн прописывал, вроде как неработает. Я говорю накидайте кто-нить. тут делов на 5 минут-если будет работать, то я буду очень счастлив))
Member
Статус: Не в сети Регистрация: 04.12.2005 Откуда: Е-бург Фото: 0
ещё разок подскажите, а ? есть простенький алгоритм
Код:
procedure TForm1.PageControl1Change(Sender: TObject); begin if PageControl1.TabIndex = 0 then SpeedButton2.Visible := true else SpeedButton2.Visible := false; end;
как организовать такую же проверку для значений TabIndex =1,2,3 ? смысл в том чтобы с формы прятались разные кнопочки, в зависимости от того какая вкладка в PageControl в данный момент открыта... пытался сделать с вложенными условиями но чот не получилось. Заранее спасибо!
Member
Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Код:
procedure TForm1.PageControl1Change(Sender: TObject); begin case PageControl1.TabIndex of 0 : // делаем что-то ; 1 : // делаем что-то ; 2 : // делаем что-то ; end; end;
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 04.12.2005 Откуда: Е-бург Фото: 0
Lord_of_Darkness,Зеро спасибо огромное! так просто и элегантно оказывается реализуется!
и снова обращаюсь за помощью... есть база данных(interbase), таблица CLIENT с полем ID(первичный ключ), для которого включен автоинкримент (гениратор+триггер и хранимая процедура), благо через IBExpert это можно в 3 клика сделать) Проблема собственно в следующем,столкнулся вот с этим же: при попытке внести изменения (Post) выскакивает ошибка "Field 'ID' must have a value", но ведь сервер должен назначать новое значение автоинкремент-поля сам? Interbase триггер "before insert" срабатывает только после того, как запись "запостится" из Delphi приложения. В связи с чем становится невозможным увеличение автоинкрементальных ключевых полей.
В качестве решения там предлагают использование хранимой процедуры (stored procedure), что я собственно и сделал. Далее я взял компонент IBStoredProc, подключил к нему хп из базы данных, по правому клику - Execute значения генератора меняются, всё работает НО как это соеденить со связкой с DBGridEh+DBNavigator, через которые вводятся данные я никак не могу понять пробовал так
Код:
procedure TForm1.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn); begin if Button = nbInsert then DataModule2.IBStoredProc1.ExecProc; end;
но ничего не работает... чувствую что не хватает какой-то мелочи, а какой не могу понять
upd, разобрался! вместо IBStoredProc надо использовать обыкновенный IBQuery и запросом вызывать значение хранимой процедуры!!
Код:
select * from YourStoredProc(:param1, :param2, :param3)
ну а дальше через lookup можно добавить поле и всё будет добовлятся!!! ура
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения