AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi ...SetFocus; auf deaktivem oder unsichhtbarem Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

...SetFocus; auf deaktivem oder unsichhtbarem Fenster

Ein Thema von Tim.exe · begonnen am 3. Dez 2003 · letzter Beitrag vom 3. Dez 2003
Antwort Antwort
Tim.exe

Registriert seit: 29. Apr 2003
186 Beiträge
 
#1

...SetFocus; auf deaktivem oder unsichhtbarem Fenster

  Alt 3. Dez 2003, 14:22
Hallo,

ist es irgenwie möglich über Umwege einem unsichtbaren Fenster bzw. Komponente (Memo) einen/den Focus zu verleihen?

Ich habe einen kleine Anwendung die bei Start sofort minimiert und unsichtbar wird. Das Memo kann ich im OnCreate nicht fokussieren, da ja unsichtbar...
!!! Sigs stinken !!!
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#2

Re: ...SetFocus; auf deaktivem oder unsichhtbarem Fenster

  Alt 3. Dez 2003, 14:48
Hallo,

ich stelle mir sofort die Frage, warum möchtest Du das Memo Focusieren, wenn die Anwendung sowieso unsichtbar ist.

Hmpf...

Irgendwie unlogisch.

Gruss


Samson
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
Tim.exe

Registriert seit: 29. Apr 2003
186 Beiträge
 
#3

Re: ...SetFocus; auf deaktivem oder unsichhtbarem Fenster

  Alt 3. Dez 2003, 14:55
Beim starten der Anwendung wird ein Wert in das Memo geschrieben, normalerweise könnte man ja:

Delphi-Quellcode:
...
Memo1.SelText := 'Irgendwas';
...
Aber das geht in meinem speziellen Fall nicht, das Memo muß erst fokussiert werden...
!!! Sigs stinken !!!
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: ...SetFocus; auf deaktivem oder unsichhtbarem Fenster

  Alt 3. Dez 2003, 15:03
gibts da nich die Methode CanFocus ?

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Rumpi

Registriert seit: 26. Aug 2003
Ort: Berlin
72 Beiträge
 
#5

Re: ...SetFocus; auf deaktivem oder unsichhtbarem Fenster

  Alt 3. Dez 2003, 15:06
Solange deine Anwendung den Focus hat einfach
Delphi-Quellcode:
 Memo.SetFocus;


// sonnst musst du sie mit ForceForegroundWindow nach vorn holen

function ForceForegroundWindow(hwnd: THandle): boolean;
const
  SPI_GETFOREGROUNDLOCKTIMEOUT = $2000;
  SPI_SETFOREGROUNDLOCKTIMEOUT = $2001;
var
  ForegroundThreadID: DWORD;
  ThisThreadID : DWORD;
  timeout : DWORD;
begin
  if IsIconic(hwnd) then
    ShowWindow(hwnd, SW_RESTORE);
  if GetForegroundWindow = hwnd then
    Result := true
  else
  begin
  // Windows 98/2000 doesn't want to foreground a window when some other
  // window has keyboard focus

    if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion > 4)) or
       ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and
       ((Win32MajorVersion > 4) or ((Win32MajorVersion = 4) and
       (Win32MinorVersion > 0)))) then
    begin
      // Code from Karl E. Peterson, [url]www.mvps.org/vb/sample.htm[/url]
      // Converted to Delphi by Ray Lischner
      // Published in The Delphi Magazine 55, page 16

      Result := false;
      ForegroundThreadID :=
      GetWindowThreadProcessID(GetForegroundWindow,nil);
      ThisThreadID := GetWindowThreadPRocessId(hwnd,nil);
      if AttachThreadInput(ThisThreadID, ForegroundThreadID, true) then
      begin
        BringWindowToTop(hwnd); // IE 5.5 related hack
        SetForegroundWindow(hwnd);
        AttachThreadInput(ThisThreadID, ForegroundThreadID, false);
        Result := (GetForegroundWindow = hwnd);
      end;
      if not Result then
      begin
        // Code by Daniel P. Stasinski

        SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0);
        SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(0),
        SPIF_SENDCHANGE);
        BringWindowToTop(hwnd); // IE 5.5 related hack
        SetForegroundWindow(hWnd);
        SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0,
        TObject(timeout), SPIF_SENDCHANGE);
      end;
    end
    else
    begin
      BringWindowToTop(hwnd); // IE 5.5 related hack
      SetForegroundWindow(hwnd);
    end;

    Result := (GetForegroundWindow = hwnd);
  end;
end; { ForceForegroundWindow }
mfg Rumpi
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#6

Re: ...SetFocus; auf deaktivem oder unsichhtbarem Fenster

  Alt 3. Dez 2003, 15:08
Was genau willst du machen? Vielleicht gibt es dafür ja noch alternativen
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: ...SetFocus; auf deaktivem oder unsichhtbarem Fenster

  Alt 3. Dez 2003, 16:17
ActiveControl setzen
  Mit Zitat antworten Zitat
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: ...SetFocus; auf deaktivem oder unsichhtbarem Fenster

  Alt 3. Dez 2003, 16:25
In der Tabulatorenreihenfolge als erstes hilft auch in einigen Fällen.

Gruß

Frank
Frank
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#9

Re: ...SetFocus; auf deaktivem oder unsichhtbarem Fenster

  Alt 3. Dez 2003, 16:27
Hallo.

Also. Wie ich das sehe, möchtest Du an einer bestimmten Position des Memos einen Text einfügen. Klar mit Memo.SelText kannst Du an der Position des Cursors Text einfügen oder eben den Selektieren Text austauschen. Dazu muss aber das Memo selektiert sein, was in diesem Fall nicht möglich ist.

Bei mir stellt sich jetzt die Frage ob Du am Ende des Memo was einfügen möchtest oder an einer bestimmten Position.

Beim ersten Fall würde ich memo.text := memo.text +'irgendwas'; benutzen und beim zweiten würde ich den Text in einem String stecken und entsprechend Parsen.

Gruss


Samson
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz