Einzelnen Beitrag anzeigen

Benutzerbild von TeTSuO
TeTSuO

Registriert seit: 26. Feb 2005
Ort: Ludwigshafen am Rhein
60 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Wie OpenDialog verändern?

  Alt 29. Mär 2005, 01:46
Habe das anders gelöst!
Da ich eine GroupBox und ein Label darin haben wollte und das mit dem Code

   CreateWindowEx(...) nicht geklappt hatte habe ich rausgefunden das es auch mit der VCL geht.

Ich habe das folgendermasen gelöst :

Delphi-Quellcode:
type
  dOpenSLD: TOpenDialog;

procedure TfMain.dOpenSLDShow(Sender: TObject);
var
  hParent: THandle;
  rect: TRect;
  pInfo: TGroupBox;
  lInfo: TLabel;
begin
  // Fensterhandle holen
  hParent := GetParent(dOpenSLD.Handle);
  // Position und Größe ermitteln
  GetWindowRect(hParent, rect);
  // Dialog vergrößern für Info
  SetWindowPos(hParent, 0, 0, 0, rect.Right - rect.Left+250, rect.Bottom - rect.Top
    , SWP_NOMOVE);
  // Groupbox in Opendialog erstellen und anpassen
  pInfo:=TGroupBox.Create(dOpenSLD);
  // musste gesetzt werden sonst sah es aus wie zu Win 3.11 zeiten
  pInfo.Ctl3D:=True;
  pInfo.Color:=clBtnFace;
  // GroupBox auf OpenDialog Fenster verschieben
  pInfo.ParentWindow:=hParent;
  // Namen zum wiederfinden zuweisen
  pInfo.Name:='gbInfo';
  // GroupBox positionieren
  pInfo.Left:=rect.Right - rect.Left-5;
  pInfo.Top:=10;
  pInfo.Width:=240;
  pInfo.Height:=rect.Bottom - rect.Top-50;
  // Caption der GroupBox zuweisen
  pInfo.Caption:='Datei Informationen';
  // Label in GroupBox erstellen und anpassen
  lInfo:=TLabel.Create(pInfo);
  // Parent auf GroupBox
  lInfo.Parent:=pInfo;
  // Namen zum wiederfinden zuweisen
  lInfo.Name:='lblInfo';
  lInfo.Align:=alClient;
  lInfo.Transparent:=True;
end;

procedure TfMain.dOpenSLDClose(Sender: TObject);
var pInfo: TGroupBox;
    lInfo: TLabel;
begin
 // GroupBox finden
 pInfo:=(dOpenSLD.FindComponent('gbInfo') as TGroupBox);
 //Label Finden
 lInfo:=(pInfo.FindComponent('lblInfo') as TLabel);
 // wenn gefunden löschen
 if lInfo <> nil Then lInfo.Destroy;
 if pInfo <> nil Then pInfo.Destroy;
end;

procedure TfMain.dOpenSLDSelectionChange(Sender: TObject);
var pInfo: TGroupBox;
    lInfo: TLabel;
    tInfo: TSLDFileInfo;
begin
 // GroupBox finden
 pInfo:=(dOpenSLD.FindComponent('gbInfo') as TGroupBox);
 //Label Finden
 lInfo:=(pInfo.FindComponent('lblInfo') as TLabel);
 if lInfo = nil then Exit;
 // SLDFileInfo Namen übergeben
 tInfo.Filename:=dOpenSLD.FileName;
 // und Info bekommen
 if GetSLDFileInfo(tInfo) Then
    // Info formatieren
    lInfo.Caption:=Format(capOpenInfo,[tInfo.Name,tInfo.Datenpfad,
                                       tInfo.Count,tInfo.Length])
 Else
    // wenn keine info dann Label leer
    lInfo.Caption:='';
end;
”Wer immer nur das tut was er schon kann, wird immer das bleiden was er schon ist”

DiaSchau
  Mit Zitat antworten Zitat