घर
Top.Mail.Ru Yandeks.Metrika
फोरम: "मामले";
वर्तमान संग्रह: 2003.09.15;
डाउनलोड करें: [xml.tar.bz2];

नीचे

एमडीआई और ठिकाने इसी तरह की शाखाएँ खोजें


Alek Aaz   (2003-08-25 15:35) [0]

Плиз, поскажите как лучше сделать?
Скажем есть таблица
ग्राहक
संख्या
физ/юр лицо

Юзер выбирает клиента, жмет ентер - открывается MDI форма с подробными данными по клиенту. Выбирает другого - новая форма.
Формы разные, для юр и физ лиц.
Как "правильно" плодить MDI формы?

Вопрос как передать данные в MDI форму? Как лучше это сделать?



Hawk2   (2003-08-25 16:01) [1]

А не запаришся ты бегать по этим формам?

Зделай проще, на форме два грида, в одном будет выводится таблица с клиентами, в другом - инфа по этому клиенту. В обеих таблицах должно быть уникальное поле для их связи меджу собой. Это подготовка.

Потом в первом Гриде открываешь таблицу с клиентами, в DataSource, ну который связан с этим НД по событию OnDataChange делаешь запрос ко второй таблице, где выбираешь запись соответствующую номеру клиента из первой, а данные выводишь во второй грид.



MsGuns   (2003-08-25 16:26) [2]

А зачем 2 грида-то ? В первом правильно, список клиентов с коротким перечнем основных полей. Внизу (вверху, сбоку) панель с обычными или DB-Aware компонентами типа Edit/Memo и т.д., отображающими не уместившуюся в гриде подробную инфу о текщем (в гриде) клиенте. Эту панель можно отключать (для ускоренного листания или поиска в гриде) или включать (для редактирования, поиска по второстепенным филдам etc).
Если компоненты DB-Aware, то источник должен быть тот же самый, что и для НД в гриде. Если контролы панели - простые Edit, то заполнение их по событию AfterScroll НД из текущей записи этого НД.



Hawk2   (2003-08-25 16:50) [3]

Согласен, так будет даже красивее. Похоже автор и этого вопроса исчез. :-)



TohaNik   (2003-08-25 17:07) [4]

IMHO इस मामले में PageControl का उपयोग करना सुविधाजनक है।



MsGuns   (2003-08-25 17:16) [5]

>TohaNik © (25.08.03 17:07) [4]

?

दोपहर के भोजन के:
- Первое на плите в кухне
- Второе - в кафе за углом
- Компот у тети в Ташкенте в погребе

;))



Hawk2   (2003-08-25 17:27) [6]

MsGuns © (25.08.03 17: 16) [5]
Смеялся долго.



TohaNik   (2003-08-25 17:47) [7]

MsGuns © (25.08.03 17: 16) [5]
>TohaNik © (25.08.03 17:07) [4]

?

दोपहर के भोजन के:
- Первое на плите в кухне
- Второе - в кафе за углом
- Компот у тети в Ташкенте в погребе

;))

Это точно - вредно на работу из отпуска;) приходить:)



Alek Aaz   (2003-08-26 10:01) [8]

2All
Да нет, не исчез, далеко от компа был.
>А не запаришся ты бегать по этим формам?
Нет не запарюсь.
Делал я и с боку и с табсшитами - не то. Проще конечно, но не лучше. С точки зрения юзера.

Приятно что Вам весело, но мне не очень.



Sergey13   (2003-08-26 10:15) [9]

2Alek Aaz © (26.08.03 10:01) [8]
> Проще конечно, но не лучше. С точки зрения юзера.
Странная точка зрения. А ты его спрашивал? Или это твоя точка зрения на его точку зрения? 8-)
Тут еще такой камушек подводный. Если все твои детские формы ссылаются на один датасет (как у тебя описано), то при переходе на другую запись данные на всех формах сменятся и будут одинаковыми (если используются DB-компоненты). Тут поможет только жесткая связка форма<->датасет на этой форме. А это уже неудобно. Там поредактировал - бросил пошел другую редактировать. Можно получить удивление. 8-)



roottim   (2003-08-26 10:36) [10]


> Плиз, поскажите как лучше сделать?
> Скажем есть таблица
> Клиент
> नंबर
> физ/юр лицо
> Юзер выбирает клиента, жмет ентер - открывается MDI форма
> с подробными данными по клиенту. Выбирает другого - новая
> форма.
> Формы разные, для юр и физ лиц.
> Как "правильно" плодить MDI формы?
>
> Вопрос как передать данные в MDI форму? Как лучше это сделать?


форму, по возможности, необходимо сделать автономной
данная форма зависит только от параметров передаваемых ей

для решения твоего вопроса, необходим "MDIQuery"(или сколько требутся) на форме с входными параметрами по ключу клиента
все контролы формы работают с этим "MDIQuery"... т.о. твоя форма независимо от позиционного НД "редактирует клиента"
вызов формы - стандартным образом с передачей соответствующих параметров

type
TMDIForm1 = class(TForm)
MDIQuery: TQuery;
***
procedure FormClose(Sender: TObject; var Action: TCloseAction);
public
property ClientID: Integer read GetClientID write SetClientID;
***
procedure ShowClient(AClientID: Integer);
***
end;

var
Form1: TMDIForm1;

implementation
{ TMDIForm1 }

function TMDIForm1.GetClientID: Integer;
begin
Result := MDIQuery.ParamByName("CLIENT_ID").AsInteger;
end;

procedure TMDIForm1.SetClientID(const Value: Integer);
begin
MDIQuery.ParamByName("CLIENT_ID").AsInteger := Value;
end;

procedure TMDIForm1.ShowClient(AClientID: Integer);
begin
ClientID := AClientID;
***
MDIQuery.Open;
end;

procedure TMDIForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
***
ACtion := caFree;
end;
--------------------------------------------------------

процедура вызова

var vForm: TMDIForm1;
begin
vForm := TMDIForm1.Create(Self);
vForm.ShowClient(q1.FieldByName("CLIENT_ID").AsInteger);
end;

--------------------------------------------------------


сроду столько не писал :)...
ну надеюсь идея понятна !
> Приятно что Вам весело, но мне не очень.
и может и тебе повеселеет :)



Hawk2   (2003-08-26 10:40) [11]

Sergey13 © (26.08.03 10:15) [9] > Можно получить удивление. 8-)
Ну вот захотелось человеку именно так сделать, потом переделает, зато опыт накапливается :-)

Alek Aaz © (26.08.03 10:01) [8]> Нет не запарюсь.
В данном случае работа с MDI-формой ничем не отличается от обычной. По ЕНТЕРу определяеш на какой записи ты находишся и присваиваешь значения полей текущей записи, тем компонентам в которых будет отображаться информация. Естественно в разделе uses нужно указать модуль з компонентами доступа к базе данных, ну там DataModule или главная форма, смотря как там у тебя.



VAleksey   (2003-08-26 10:58) [12]


> MsGuns © (25.08.03 17: 16)

Ну вот :-((, а я всю жизнь использов закладки.

Не такая уж плохая вещь я скажу. Надо только правильно группировать информацию.



asp   (2003-08-26 11:03) [13]

Так и делать.
MDI-форма со свойством IDClient. При выборе клиента сперва перебираешь MDI-формы с клиентами и ищешь нужный IDClient. Нашел - активизируй. Не нашел - делай новую и передавай ей IDClient.



Alek Aaz   (2003-08-26 11:25) [14]

2Sergey13
>Странная точка зрения. А ты его спрашивал?
Угу. То-есть юЗверь то как раз и бунтует. Меня устраивает старый вариант :)
>форма<->датасет на этой форме.
К этому все и идет. :(
2roottim
>ну надеюсь идея понятна !
А.. э... пока не очень, но я разберусь. Спасибо!
2Hawk2 ©
>потом переделает, зато опыт накапливается :-)
Мне больше нравится девиз -"Опыт пропорционален стоимости испорченного оборудования" :)
>В данном случае работа с MDI-формой ничем не отличается от обычной.
Ну не совсем. Sergey13 про подводные камушки верно сказал.

2asp ©
>Так и делать.
Как? по закладкам?

अगर मैं ऐसा करता हूं:
Form3.DataSet1:=DataModule.Table1.DataSet;
Будет пахать?

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



Alek Aaz   (2003-08-26 11:29) [15]

2roottim
ВЕЩЬ!...



asp   (2003-08-26 12:09) [16]

Alek Aaz © (26.08.03 11:25) [14] > Шарше ля форм.
MainForm.MDIChildren & MainForm.MDIChildCount



पन्ने: 1 पूरी शाखा

फोरम: "मामले";
वर्तमान संग्रह: 2003.09.15;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.61 एमबी
समय: 0.039 c
4-48827
bloodman
2003-07-14 20:18
2003.09.15
WH_KEYBOARD


14-48708
डेमन-777
2003-08-28 13:57
2003.09.15
Интересуюсь...


3-48467
एक्स पुरुष
2003-08-22 08:49
2003.09.15
MasterSource


14-48792
AZ
2003-08-26 04:12
2003.09.15
Фу-у-у!!! Закончил проект. А как у вас дела?


1-48540
dez
2003-09-02 11:42
2003.09.15
सार त्रुटि





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский