Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TJvObjectPickerDialog "Falscher Parameter" (https://www.delphipraxis.net/107654-tjvobjectpickerdialog-falscher-parameter.html)

Dezipaitor 31. Jan 2008 09:36


TJvObjectPickerDialog "Falscher Parameter"
 
hi
ich benutze grade den TJvObjectPickerDialog der JEDI.

Leider ist es so, dass ich es nicht hinbekommen, den Dialog zu starten. Alles was ich bekomme ist "Falscher Parameter" bei Execute. Welche Parameter sind denn nun korrekt?

thx

Remko 31. Jan 2008 19:27

Re: TJvObjectPickerDialog "Falscher Parameter"
 
I never used Jcl version, but this works for me:

Delphi-Quellcode:
function InitObjectPicker(Picker: IDsObjectPicker): HRESULT;
var
  ScopeInit: array [0..0] of TDSOPScopeInitInfo;
  InitInfo: TDSOPInitInfo;
begin
  if nil = Picker then
    Result := E_INVALIDARG
  else
  begin
    ZeroMemory(@ScopeInit, SizeOf(ScopeInit));
    ScopeInit[0].cbSize := SizeOf(TDSOPScopeInitInfo);
//    ScopeInit[0].flType := DSOP_SCOPE_TYPE_TARGET_COMPUTER;
    ScopeInit[0].flType := DSOP_SCOPE_TYPE_UPLEVEL_JOINED_DOMAIN;
    ScopeInit[0].flScope := DSOP_SCOPE_TYPE_DOWNLEVEL_JOINED_DOMAIN;
    ScopeInit[0].FilterFlags.Uplevel.flBothModes := DSOP_FILTER_USERS;
    ScopeInit[0].FilterFlags.flDownlevel := DSOP_DOWNLEVEL_FILTER_USERS;

    ZeroMemory(@InitInfo, SizeOf(InitInfo));
    InitInfo.cbSize := SizeOf(InitInfo);
    InitInfo.cDsScopeInfos := SizeOf(ScopeInit) div SizeOf(TDSOPScopeInitInfo);
    InitInfo.aDsScopeInfos := @ScopeInit;
    InitInfo.flOptions := DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK;

    Result := Picker.Initialize(InitInfo);
  end;
end;

procedure TfrGebrAanmaken.edtGebruikerButtonClick(Sender: TObject);
var
  Picker: IDsObjectPicker;
  DatObj: IDataObject;
begin
  if Succeeded(CoInitialize(nil)) then
  try
    if Succeeded(CoCreateInstance(CLSID_DsObjectPicker, nil,
      CLSCTX_INPROC_SERVER, IID_IDsObjectPicker, Picker)) then
    try
      if Succeeded(InitObjectPicker(Picker)) then
        case Picker.InvokeDialog(Self.Handle, DatObj) of
          S_OK:
            try
              ProcessSelectedObjects(DatObj);
            finally
              DatObj := nil;
            end;
          S_FALSE:
            MessageDlg('Kiezen van gebruiker afgebroken', mtWarning, [mbOK],0);
        end;
    finally
      Picker := nil;
    end;
  finally
    CoUninitialize;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz