unit Select;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, CalWin32, NetWin32;
type
TSelectObjectForm = class(TForm)
btnOK: TButton;
btnCancel: TButton;
fraObjects: TGroupBox;
btnSetContext: TButton;
lblContext: TLabel;
lstObjects: TListBox;
procedure FormCreate(Sender: TObject);
procedure btnSetContextClick(Sender: TObject);
private
hContext: NWDSContextHandle;
FObjectClass: string;
function GetObjectClass: string;
procedure SetObjectClass(aValue: string);
public
procedure ChangeToContext(aContext: NWDSContextHandle);
procedure CanonicalizeNames;
property ObjectClass: string read GetObjectClass write SetObjectClass;
end;
var
SelectObjectForm: TSelectObjectForm;
implementation
uses NWHelper, Context;
function TSelectObjectForm.GetObjectClass: string;
class='delphiKeyword'>begin
GetObjectClass := FObjectClass;
end;
procedure TSelectObjectForm.SetObjectClass(aValue: string);
class='delphiKeyword'>begin
if (FObjectClass <> aValue) then
class='delphiKeyword'>begin
FObjectClass := aValue;
lstObjects.Items.Clear;
lstObjects.Items.AddStrings(GetObjectList(hContext, FObjectClass));
end;
end;
procedure TSelectObjectForm.ChangeToContext(aContext: NWDSContextHandle);
var
Context: class='delphiKeyword'>array[0..MAX_DN_BYTES] of Char;
class='delphiKeyword'>begin
try
NWCheckAndThrow( NWDSDuplicateContextHandle(aContext, hContext) );
NWCheckAndThrow( NWDSGetContext(hContext, DCK_NAME_CONTEXT, @Context) );
lblContext.Caption := Context;
lstObjects.Items.Clear;
lstObjects.Items.AddStrings(GetObjectList(hContext, FObjectClass));
except
on E:ENWException do
E.Show();
end;
end;
procedure TSelectObjectForm.CanonicalizeNames;
var
ShortName, CanonName: class='delphiKeyword'>array[0..MAX_DN_BYTES] of Char;
Index: Integer;
bChecked: Boolean;
class='delphiKeyword'>begin
for Index := 0 to lstObjects.Items.Count - 1 do
class='delphiKeyword'>begin
bChecked := lstObjects.Selected[Index];
StrPCopy (ShortName, lstObjects.Items[Index]);
try
NWCheckAndThrow( NWDSCanonicalizeName(hContext, @ShortName, @CanonName) );
except
on E:ENWException do
E.Show();
end;
lstObjects.Items[Index] := '.' + string(CanonName);
lstObjects.Selected[Index] := bChecked;
end;
end;
procedure TSelectObjectForm.FormCreate(Sender: TObject);
class='delphiKeyword'>begin
FObjectClass := '';
hContext := GetContextHandle();
end;
procedure TSelectObjectForm.btnSetContextClick(Sender: TObject);
var
ContextDlg: TContextForm;
NameContext: class='delphiKeyword'>array[0..MAX_DN_BYTES] of Char;
class='delphiKeyword'>begin
ContextDlg := TContextForm.Create(self);
ContextDlg.ChangeToContext(hContext);
if (ContextDlg.ShowModal = mrOk) then
class='delphiKeyword'>begin
StrPCopy (NameContext, ContextDlg.NameContext);
NWCheckAndThrow( NWDSSetContext(hContext, DCK_NAME_CONTEXT, @NameContext) );
lstObjects.Items.Clear;
lstObjects.Items.AddStrings(GetObjectList(hContext, FObjectClass));
end;
ContextDlg.Free;
end;
end.