Avatar billede -bomann- Nybegynder
13. juni 2002 - 08:26 Der er 5 kommentarer og
1 løsning

Hvordan kan man gennemtvinge en setFocus på et Edit felt?

Problemet er at efter jeg har kørt et andet program returnerer jeg til den bagved liggende form hvor jeg gerne vil sætte fokus på et givent edit felt. Det virker lidt tilfældigt hvor programmet sætter fokus og til tider gør den det slet ikke. Spørgsmål: Hvordan overruler jeg hvad der måtte være af keydown, onEnter og andre events og tvinger cursoren til at stille sig i Edit feltet???
Avatar billede stoney Nybegynder
13. juni 2002 - 09:15 #1
På din forms onpaint

edit1.setfocus;

Stoney
Avatar billede jekk Nybegynder
13. juni 2002 - 09:18 #2
det lyder for mig, som om, at der returneres tilfældigt, når du har kaldt et andet program og vender tilbage -
hvis dette er tilfældet, så prøv at kalde det andet program med følgende - som venter med at gå videre i dit program, til det andet er afsluttet, og her kan du så placere dit Editfelt.SetFocus;
--------------------------------
unit execwait;

interface

uses
  Classes, Windows, SysUtils, Forms, ShellAPI;

function ExecAppWait(AppName, Params: string): Boolean ;

implementation

{ Execute an external application APPNAME.
  Pass optional parameters in PARAMS, separated by spaces.
  Wait for completion of the application
  Returns FASLE if application failed.                    }
function ExecAppWait(AppName, Params: string): Boolean;
var
  // structure containing and receiving info about application to start
  ShellExInfo: TShellExecuteInfo;
begin
  FillChar(ShellExInfo, SizeOf(ShellExInfo), 0);
  with ShellExInfo do begin
    cbSize := SizeOf(ShellExInfo);
    fMask := see_Mask_NoCloseProcess;
    Wnd := Application.Handle;
    lpFile := PChar(AppName);
    lpParameters := PChar(Params);
    nShow := sw_ShowNormal;
  end;
  Result := ShellExecuteEx(@ShellExInfo);
  if Result then
    while WaitForSingleObject(ShellExInfo.HProcess, 100) = WAIT_TIMEOUT do
    begin
      Application.ProcessMessages;
      if Application.Terminated then Break;
    end;
end;

end.
-----------------------
Avatar billede -bomann- Nybegynder
13. juni 2002 - 10:09 #3
Virker desværre kun periodisk...
Avatar billede -bomann- Nybegynder
13. juni 2002 - 10:12 #4
Det bagved liggende program kører ikke videre før der andet terminerer. Det køre sekventielt så jeg tror ikke det løser problemet...
Avatar billede zimp Nybegynder
13. juni 2002 - 16:47 #5
Måske bruge PostMessage til det program du returnerer til? I eventen kan du sætte focus.
Avatar billede -bomann- Nybegynder
24. juni 2002 - 08:38 #6
Ikke længere aktuelt...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester