Einzelnen Beitrag anzeigen

H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
266 Beiträge
 
Delphi 11 Alexandria
 
#1

Programm startet nicht im Vordergrund

  Alt 22. Jul 2025, 16:59
Moin,

sorry - ich bin mal wieder zu blöde Ich habe hier ein Programm das beim Start ein paar Dateien kopieren soll und dann auf einen ButtonClick warten soll - sprich, das Hauptfenster soll den Focus bekommen. Klappt auch alles - nur wenn ich erst ein paar Dateien kopiere (mit CopyFileEx) dann bekommt das Hauptfenster hinterher nicht den Focus.

Hier mal die Programmteile die überhaupt angefasst werden:

Delphi-Quellcode:
function CopyFileEx(const ASource, ADest: string; ARenameCheck: boolean = false): boolean;
var
  sh: TSHFileOpStruct;
begin
  sh.Wnd := Application.Handle;
  sh.wFunc := FO_COPY;

  // String muss mit #0#0 terminiert werden, um das Listenende zu setzen
  sh.pFrom := PChar(ASource + #0#0);
  sh.pTo := PChar(ADest + #0#0);
  sh.fFlags := fof_MultiDestFiles;
  if ARenameCheck then sh.fFlags := sh.fFlags or FOF_NOCONFIRMATION;
  Result:=ShFileOperation(sh)=0;
end;

procedure KopiereDateien;
var
  searchResult: TSearchRec;
begin
  (* Unterverzeichnis prüfen *)
  if not DirectoryExists('D:\xTemp\Player') then ForceDirectories('D:\xTemp\Player');
  (* Neue Dateien kopieren *)
  begin
  // Try to find regular files matching Unit1.d* in the current dir
    if FindFirst('R:\Player\*.*', faAnyFile, searchResult) = 0 then
    begin
      repeat
        if (searchResult.Name <> '.') and (searchResult.Name <> '..') then CopyFileEx('R:\Player\' +searchResult.Name, 'D:\xTemp\Player\' +searchResult.Name, true);
      until FindNext(searchResult) <> 0;

      // Must free up resources used by these successful finds
      FindClose(searchResult);
    end;
  end;
end;

procedure TMultiMPlayer.FormShow(Sender: TObject);
begin
  if not ProgrammGestartet then
  begin
    ProgrammGestartet := true;
    oldMainFormW := Width;
    oldMainFormH := Height;
    oldMainFormL := Left;
    oldMainFormT := Top;

    oldImgAnzeigeW := imgAnzeige.Width;
    oldImgAnzeigeH := imgAnzeige.Height;
    AllButtonTop := btnStart.Top;

    KopiereDateien;

  end;
end;
Versteht das jemand ?

Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat