Autor Beitrag
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 15.01.10 00:21 
Jo hi, mal wieder ein kleines Tool welches aus dem reinen Bedarf geboren wurde, vielleicht nützt es ja dem ein oder anderen der ähnliche Probleme hat.

screenshot

Was macht es?
Mit dem Tool kann man ein Fenster auf dem Desktop auswählen, und manuell die Einstellung "StayOnTop" bzw. eben "Normal" setzen.

Wozu braucht man so was?
Naja, genau genommen gab es bei mir zwei Anwendungen bisher. Wenn ich mit Turbo Delphi programmiere will ich den ganzen Bildschirm haben. Leider hat Notepad nicht die Möglichkeit im Vordergrund zu bleiben, das selbe gilt für ProgDVB wenn ich nebenbei Fernsehe (ProgDVB hat zwar die Eigenschaft, sie funktioniert bei mir aber nicht im Kompakt-Modus). Also hatte ich die Idee diese Fenster manuell mit "StayOnTop" zu versehen.

Wie funktionierts?
Ganz einfach. Man klickt auf "Select Form". Anschließend hat man 2 Sekunden Zeit die Maus über dem zu wählenden Fenster zu positionieren. Wurde ein Fenster gewählt, so erscheint der Fenstertext im Panel.
Jetzt kann man mit "OnTop" und "nOnTop" den Mode ein/ausschalten.

Oft wird mit SelectForm nicht das richtige Fenster gewählt, in diesem Fall kann man mit dem Parent-Button den Parent anwählen, wen nötig mehrfach (erfordert ein bisschen rumgespiele bei manchen Anwendungen). Das höchste Element, welches kein Parent besitzt wird zusätzlich mit einem Stern (*) gekennzeichnet.

Tja, also ich hoffe es nützt jemandem :) ist zwar nur ein in 15 Minuten hingehacktes Tool, aber vielleicht zu schade um auf meiner Platte zu vergammeln.


Moderiert von user profile iconNarses: Topic aus Freeware Projekte verschoben am Fr 15.01.2010 um 00:04
Einloggen, um Attachments anzusehen!
_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 15.01.10 03:29 
Hey,

funzt 1a. Aber ich hab 2 kleine Verbesserungsvorschläg hab ich noch und zwar, dass das Panel nich leer bleibt, wenn die Form keinen Namenn hat und das die Form automatisch ausgewählt wird, wenn ich ein Objekt auf der Form auswähl. Denn wenn ich das Objekt auf der Form immer im Vordergrund stellen kann bringt das ja nich wirklich was (geht auch gar nich)^^

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Tilman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 15.01.10 13:18 
Hi Bergmann danke für das Feedback ^^ jo die Idee ist gut, ich denke ich müsste den höchsten Parent nehmen der noch ein sichtbares Fenster repräsentiert. Weiß nur leider grade nicht wie man rausfindet ob ein Fenster sichtbar ist (WindowPlacement liefert jedenfalls anscheinend nix vernünftiges). Mal sehen.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 15.01.10 14:06 
Tilman ich würde das eher so machen denn dann hat man keine zeitliche beschränkung das gewünschte Fenster anzuklicken.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
private
  procedure AppDeactivate(Sender: TObject);

procedure TForm1.Button1Click(Sender: TObject);
begin
  Application.OnDeactivate := AppDeactivate;
end;

procedure TForm1.AppDeactivate(Sender: TObject);
var
  punkt: tPoint;
  ps: pChar;
begin
  getCursorPos(punkt);
  f_handle:=windows.WindowFromPoint(punkt);
  ps := strAlloc(128);
  f_handle := getAncestor(f_handle,ga_PARENT);
  getWindowText(f_handle,ps,128);
  panel1.Caption := ps;
  RichEdit1.Lines.Add(ps);
  Application.OnDeactivate := nil;
end;

//Edit: Ergänzung
//im oncreate des formulars vil noch standartmäßig topmost für die Anwendung setzen ist nämlich nervig das sie beim anklicken immer in den Hintergrund verschwindet. ;)