AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form inaktiv anzeigen

Ein Thema von Shaman · begonnen am 27. Okt 2004 · letzter Beitrag vom 24. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#1

Form inaktiv anzeigen

  Alt 27. Okt 2004, 13:21
Hallo zusammen

Wie kann ich eine Form inaktiv anzeigen lassen, also so, dass der Fokus bei dem Fenster bleibt, welches ihn schon vor dem Anzeigen meiner Form hatte. Wichtig ist, dass das letzte Fenster den Fokus gar nicht erst verliert.

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
eassy

Registriert seit: 7. Mai 2003
48 Beiträge
 
Delphi 5 Enterprise
 
#2

Re: Form inaktiv anzeigen

  Alt 27. Okt 2004, 13:29
hi,

eine möglichkeit ist es, unter der methode onactivate durch
form1.setfocus (des vorigen fenster) den focus zu setzen.

gruß
eassy
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Form inaktiv anzeigen

  Alt 27. Okt 2004, 13:43
Hoi

Es handelt sich um die MainForm, die den Fokus gar nicht erst erhalten darf. Wenn meine Anwendung startet, muss das vorherige Fenster aktiv bleiben.
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Form inaktiv anzeigen

  Alt 28. Okt 2004, 16:27
Schwupps
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Form inaktiv anzeigen

  Alt 28. Okt 2004, 17:44
Das ist relativ schwierig (hab gerade mal in der VCL rumgedebuggt... ), wenn nicht gar unnöglich.
Warum ist das denn so wichtig? Wie rufst du denn dein Programm auf? Würde ja nur aus der anderen
Anwendung möglich sein, denn sonst wär der Fokus ja schon vorher weg, gell?

P.S.: Ich glaub, ich hab ne Idee:
Du musst die Methode CMShowingChanged überschreiben, denn dort wird die API-Funktion ShowMWindow aufgerufen und ihr anhand des WindowStates der Parameter SW_SHOWNORMAL, SW_SHOWMINNOACTIVE oder SW_SHOWMAXIMIZED übergeben. Was du aber benötigst, ist der Parameter SW_SHOWNOACTIVATE. Ich probiers mal aus...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Form inaktiv anzeigen

  Alt 28. Okt 2004, 18:08
Es geht eben um eine Art HintWindow, nur mit Controls drinnen. Nun sieht es halt einfach besser aus, wenn das Fenster seine aktive Titelleiste beibehält, wenn das HintWindow angezeigt wird.

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

Re: Form inaktiv anzeigen

  Alt 28. Okt 2004, 18:13
Von wo aus wird denn deine HintWindow-App aufgerufen?
Kannst du das HintWindow nicht in die andere App bringen?
Du könntest doch auch im OnActivate des HintWindows den Fokus wieder zurücksetzen.

Hmm, das mit dem Überschreiben ist Käse, aber nen API-Hook auf die ShowWindow könnte gehen... mal sehen...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Form inaktiv anzeigen

  Alt 28. Okt 2004, 18:21
Ich habe eine ListBox auf einer Form, die irgendwo auf dem Desktop angezeigt werden soll, sobald man einen HotKey drückt.

Ich weiss nicht, wie ich das hinkriegen soll... Aber der Witz ist ja, in einem anderen Programm von mir ist genau dieser Effekt unerwünscht auf einmal aufgetreten, dass die MainForm beim Start inaktiv angezeigt wurde und es auch blieb, selbst wenn man sie anklickte etc. Nur konnte ich beim besten Willen nicht herausfinden woran das lag und es somit auch nicht reproduzieren...
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Form inaktiv anzeigen

  Alt 28. Okt 2004, 18:30
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ParentWindow:= GetForegroundWindow;
  Show;
end;
So sollte es aussehen, aber es müsste eben noch über das aktive Fenster hinaus angezeigt werden, falls dieses zu klein ist.
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

Re: Form inaktiv anzeigen

  Alt 28. Okt 2004, 18:38
So, bitteschön! Form wird erst bei einem Klick aktiviert!
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, afxCodeHook;

type
  TForm1 = class(TForm)
    procedure FormActivate(Sender: TObject);
  end;

var
  Form1: TForm1;
  ShowWindowNextHook: function(hWnd: HWND; nCmdShow: Integer): LongBool; stdcall;

function ShowWindowHookProc(hWnd: HWND; nCmdShow: Integer): LongBool; stdcall;

implementation

{$R *.dfm}

function ShowWindowHookProc(hWnd: HWND; nCmdShow: Integer): LongBool; stdcall;
begin
  if nCmdShow = SW_SHOWNORMAL then
    Result := ShowWindowNextHook(hWnd, SW_SHOWNOACTIVATE)
  else
    Result := ShowWindowNextHook(hWnd, nCmdShow);
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  ShowMessage('Test!');
end;

initialization
  HookCode('user32', 'ShowWindow', @ShowWindowHookProc, @ShowWindowNextHook);

finalization
  UnHookCode(@ShowWindowNextHook);

end.
Die afxCodeHook-Lib gibts hier!
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:37 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