Страница 1 из 1

Как описать поле выбора из списка

Добавлено: 07 апр 2003, 09:54
aaf
Здравствуйте всем. Помогите разобраться вот с таким вопросом:
Как в диалоге описать поле выбора из списка предварительно заполнив список SQL запросом. В стандартном доке по Антлантису "Язык VIP -> Описание полей ввода" есть атрибут ListBox но как им воспользоваться нигде не написано. Если не составит труда можно примерчик какой нибудь на эту тему или ссылочку на док по VIPу. Заранее благодарен. Андрей.

Re: Как описать поле выбора из списка

Добавлено: 07 апр 2003, 10:08
GTHack
если есть примерчик, так же хотел бы ознакомиться ...
так что буду вторым в очереди :)

Re: Как описать поле выбора из списка

Добавлено: 07 апр 2003, 12:16
Nuts
unit Main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ExtCtrls, FileCtrl;

type
TForm1 = class(TForm)
Panel1: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
HBZMemo: TMemo;
Add: TBitBtn;
Remove: TBitBtn;
Update: TBitBtn;
AllEdit: TEdit;
Insert: TBitBtn;
Create: TBitBtn;
AllListBox: TListBox;
CB_file: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo: TMemo;
Label4: TLabel;
Edit1: TEdit;
Label5: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label6: TLabel;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
procedure AddClick(Sender: TObject);
procedure RemoveClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure UpdateClick(Sender: TObject);
procedure InsertClick(Sender: TObject);
procedure CreateClick(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ListBox : TListBox;
ind : Integer;
Function CheckSelected : integer;
procedure createFile(j : integer);
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.AddClick(Sender: TObject);
begin
If AllEdit.Text <> '' then
begin
If ListBox <> Nil then
If ListBox.Items.IndexOf(AllEdit.Text) = -1 then
ListBox.Items.Add(AllEdit.Text)
else
MessageDlg('Строка с таким текстом уже есть', mtInformation, [mbOk], 0);
AllEdit.Text := '';
end;
end;

Function TForm1.CheckSelected : integer;
var
i : integer;
begin
CheckSelected := -1;
i := 0;
While i <= ListBox.Items.Count - 1 do begin
if ListBox.Selected[i] = true then begin
CheckSelected := i;
i := ListBox.Items.Count + 5
end
else inc(i);
End;
end;

procedure TForm1.RemoveClick(Sender: TObject);
begin
If AllEdit.Text <> '' then
begin
if MessageDlg('Вы действительно хотите удалить строку,'+
' содержащую текст "' + AllEdit.Text + '"',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
If ListBox.Items.IndexOf(AllEdit.Text) <> -1 then
ListBox.Items.Delete(ListBox.Items.IndexOf(AllEdit.Text))
else
MessageDlg('Строки с таким текстом нет', mtInformation, [mbOk], 0);
AllEdit.Text := '';
end
end
else
begin
ind := CheckSelected;
if ind <> -1 then ListBox.Items.Delete(ind)
else
MessageDlg('Выберите строку или введите текст строки , которую нужно удалить',
mtInformation, [mbOk], 0);
end;
end;

procedure TForm1.UpdateClick(Sender: TObject);
begin
ind := CheckSelected;
if (ind <> -1) and (AllEdit.Text <> '') then
begin
ListBox.Items.Strings[ind] := AllEdit.Text;
end
else
MessageDlg('Выберите строку и введите измененный текст строки , которую нужно изменить',
mtInformation, [mbOk], 0);

end;

procedure TForm1.InsertClick(Sender: TObject);
begin
ind := CheckSelected;
If (AllEdit.Text <> '') and (ind <> -1) then
begin
If ListBox <> Nil then
If ListBox.Items.IndexOf(AllEdit.Text) = -1 then
ListBox.Items.Insert(ind, AllEdit.Text)
else
MessageDlg('Строка с таким текстом уже есть', mtInformation, [mbOk], 0);
AllEdit.Text := '';
end
else
MessageDlg('Выберите строку, перед которой нужно вставить и введите текст новой строки',
mtInformation, [mbOk], 0);
end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin
If PageControl1.ActivePage = TabSheet1 then
ListBox := AllListBox
else
ListBox := Nil
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
PageControl1Change(nil);
CB_file.ItemIndex := 6;
end;

procedure TForm1.createFile(j : integer);
var
i : integer;
begin
memo.Clear;
case j of
0 : begin
// Memo.Lines.Add('WIN\ATLANTIS\ATLANTIS.HBZ');
for i := 0 to AllListBox.Items.Count - 1 do begin
Memo.Lines.Add('WIN\'+AllListBox.Items[i]+'.HBZ');
end;
// Memo.Lines.Add('WIN\CNF\CNF.HBZ');
end;
1: begin
Memo.Lines.Add('rem Создание файлов с hc-приставками у констант');
for i := 0 to AllListBox.Items.Count - 1 do begin
Memo.Lines.Add('helpcopy -3 WIN\'+AllListBox.Items[i]+'.PAS '+
copy(AllListBox.Items[i], pos('\',AllListBox.Items[i])+1,
length(AllListBox.Items[i])) + '.INC');
end;
//Memo.Lines.Add('helpcopy -3 WIN\CNF\CNF.PAS CNF.INC');
end;
2: begin
Memo.Lines.Add('rem Создание файла galnet.h');
Memo.Lines.Add('if exist %1 del %1');
Memo.Lines.Add('if exist helpcopy.log del helpcopy.log');
Memo.Lines.Add('dir /b $!$!$!$!.$!$ > %1');
//Memo.Lines.Add('rem copy /A %1 + R:\g57\HLP\WIN\ATLANTIC\ATLANTIS.PAS %1 >> helpcopy.log');
for i := 0 to AllListBox.Items.Count - 1 do begin
Memo.Lines.Add('copy /A %1 + WIN\'+AllListBox.Items[i]+'.PAS %1 >> helpcopy.log');
end;
//Memo.Lines.Add('copy /A %1 + WIN\CNF\CNF.PAS %1 >> helpcopy.log');
end;
3: begin
Memo.Lines.Add('echo копирование *.cnt в %TPU%');
Memo.Lines.Add('call ..\sets.bat');
Memo.Lines.Add('copy WIN\GALNET.CNT %TPU% >> helpcopy.log');
// Memo.Lines.Add('copy WIN\ATLANTIS\ATLANTIS.CNT %TPU% >> helpcopy.log');
for i := 0 to AllListBox.Items.Count - 1 do begin
Memo.Lines.Add('copy WIN\'+AllListBox.Items[i]+'.CNT %TPU% >> helpcopy.log');
end;
// Memo.Lines.Add('copy WIN\CNF\CNF.CNT %TPU% >> helpcopy.log');
end;
4: begin
Memo.Lines.Add('echo копирование *.hlp в %TPU%');
Memo.Lines.Add('call ..\sets.bat');
// Memo.Lines.Add('copy WIN\ATLANTIS\ATLANTIS.HLP %TPU% >> helpcopy.log');
for i := 0 to AllListBox.Items.Count - 1 do begin
Memo.Lines.Add('copy WIN\'+AllListBox.Items[i]+'.HLP %TPU% >> helpcopy.log');
end;
// Memo.Lines.Add('copy WIN\CNF\CNF.HLP %TPU% >> helpcopy.log');
end;
5: begin
Memo.Lines.Add('%ATLANTIS%source\ATLANTIS.HC');
Memo.Lines.Add('%ATLANTIS%source\FCENV.hc');
Memo.Lines.Add('%ATLANTIS%source\cnf.hc');
Memo.Lines.Add('%ATLANTIS%source\compi.hc');
for i := 0 to AllListBox.Items.Count - 1 do begin
Memo.Lines.Add('HLP\'+copy(AllListBox.Items[i], pos('\',AllListBox.Items[i])+1,
length(AllListBox.Items[i])) + '.INC');
end;
Memo.Lines.Add('[System]');
memo.Lines.Add('OpenResources:=%TPU%G_DSK.RES');
memo.Lines.Add('OpenResources=%TPU%G_MENU.RES');
memo.Lines.Add('OpenResources=%TPU%G_OPER.RES');
memo.Lines.Add('OpenResources=%TPU%G_MAIN.RES');
memo.Lines.Add('OpenResources=%TPU%G_VIP.RES');
memo.Lines.Add('OpenResources=%TPU%G_FIN.RES');
memo.Lines.Add('OpenResources=%TPU%G_ZAR.RES');
memo.Lines.Add('OpenResources=%TPU%G_ADM.RES');
memo.Lines.Add('OpenResources=%TPU%G_ASUP.RES');
memo.Lines.Add('OpenResources=%TPU%G_REMONT.RES');
memo.Lines.Add('OpenResources=%TPU%EXTFUN.RES');
memo.Lines.Add('OpenResources=%TPU%G_PRN.RES');
memo.Lines.Add('OpenResources=%TPU%GRUM.RES');
memo.Lines.Add('OpenResources=%TPU%COMPDATA.RES');
memo.Lines.Add('OpenResources=%TPU%G_CRM.RES');
memo.Lines.Add('/Check-');
memo.Lines.Add('/Avail-');
memo.Lines.Add('/Errors+');
memo.Lines.Add('/Make:COMMONG');
memo.Lines.Add('/Used:%ATLANTIS%source\ATLANTIS.HC;%ATLANTIS%source\FCENV.hc;%ATLANTIS%source\cnf.hc;%ATLANTIS%source\compi.hc;');
memo.Lines.Add('/R:%TPU%G_DSK.RES');
memo.Lines.Add('Hutil.LogFileName=HlpErr.log');
memo.Lines.Add('');
memo.Lines.Add('[LicParam]');
memo.Lines.Add('LicFileName=%TPU%license.lic');
end;
end;
end;

procedure TForm1.CreateClick(Sender: TObject);
var
i : integer;
begin
if cb_file.ItemIndex <> 6 then begin
createFile(cb_file.ItemIndex);
Memo.Lines.SaveToFile(Edit1.Text+'\'+Cb_file.text);
end
else
for i := 0 to 5 do begin
createFile(i);
Memo.Lines.SaveToFile(Edit1.Text+'\'+Cb_file.Items.Strings[i]);
end;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Savedialog1.Execute;
If Savedialog1.FileName <>'' then
AllListbox.Items.SaveToFile(savedialog1.FileName);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
OpenDialog1.Execute;
if opendialog1.FileName <> '' then
AllListbox.Items.LoadFromFile(Opendialog1.FileName)
end;

end.

Re: Как описать поле выбора из списка

Добавлено: 07 апр 2003, 13:50
Goblin
В поле выбора из списка (LIST) (галактианская инкапсуляция Win32 API класса окна "COMBOBOX") нет функций, чтобы забить его строками из какого-то запроса, по крайней мере ни в одной доке эти функции не встречаются . Когда ваяли Атлантис, такое впечатление, что от данного класса взяли только функцию запроса индекса текущей выбранной строки , а функции запроса выбранной строки, модификации , удаления, добавления не стали делать в Атлантисе(или сделали , но нам их не показывают). Кстати, начиная с 5.2, ни разу не видел чтобы такое поле формировалось динамически - постоянно статика и как правило - для целочисленных полей ...

Другое дело - поле с атрибутом QuickChoice - там подобная штука прокатывает и под него оно и заточено. Но примеров не видемши с ним ...

Re: Как описать поле выбора из списка

Добавлено: 07 апр 2003, 18:03
Deinis
Может быть устроит такая самое простая реализация:
Window wParam 'Задайте параметры идентификатора &VIP[Obj:"TXOMySumNP"]' (,,) EscClose;
Show at (22,15,92,18);
Screen scParam (,,);
Show at (,,,);
Fields
P1 ('Выберите требуемый результат расчета идентификатора',,sci13EnEsc) :
[LIST 1 'СОВПАДАЕТ с направлением ДО',
2 'НЕ совпадает с направлением ДО'] , protect;
<<

направление движений МЦ/услуг .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

>>
End;

HandleEvent // window
cmInit : set P1 := 0;
cmDefault : CloseWindow(wParam);
End; // HandleEvent
End; // window
P1 - это глобальная переменная в интерфейсе

непонятненько

Добавлено: 10 апр 2003, 15:40
GTHack
Деинис - спасибо, всё ясно.

а вот то что Nuts сюда бросил я не понял, да и вообще момент вот таких паскалевских программ мне непонятен. т.е. чем компилить и куда? как подключать и как использовать - если это паскаль то какое отношение к випу это имеет да и вообще к Галактике?
и вообще чё это за пример то ?
можно объяснить поподробнее если не трудно?
может где то есть инфа или какой нибудь примерчик для начинающих?

<не судите строго новичков>