Autor Beitrag
bombilein
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 31.08.04 17:05 
hi,

welcher Event-handler ist für diese Border-Icons zuständig?

ich möchte z.b. das Maximieren in bestimmten Fällen unterdrücken.

Hab an das Event "OnCanResize" gedacht; dieser Versuch endete jedoch in einem Desaster :autsch:


Zuletzt bearbeitet von bombilein am Do 02.09.04 01:14, insgesamt 1-mal bearbeitet
Viper
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 88



BeitragVerfasst: Di 31.08.04 17:13 
Hallo.

Das Event OnCanResize ist aber genau richtig, falls du das vergrößern oder verkleinern verhindern willst. Was ist denn dabei so schief gegangen? Schreib einfach mal den Code dazu, wo du die Probleme mit hattest.

_________________
"Der Sinussatz ist nur was für Leute, die Teichbesitzer mit Insel und Baum sind. Alle anderen können ihn vergessen" (Mein Mathe-Prof.)
bombilein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 31.08.04 17:30 
Mein handler:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TfrmOrderView.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin

  if(bcanResize) then begin // stellt sicher, dass ich nicht in der OnCreate Phase bin
    if(not Controller.GetScenarioActive()) then begin // Ob ich Fenstergröße beeinflussen darf.
      Resize := False;
   end;
  end;
end;


Interessant ist auch noch dieses:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TfrmOrderView.FormCreate(Sender: TObject);
begin
  bcanResize := False;
  WindowState := wsMinimized;
end;


D.h. ich minimieren das Fenster sofort in der Creation-Phase. Über den Objektinspektor hat es nur zu Problemen geführt.
Ich habe auch nicht nur dieses eine Formular, sondern insgesamt drei Stück.

Der Fehler ist jetzt folgender:

wenn ich auf den Button "maximiere" des Icons des Forms klicke, wird das Fenster maximiert.
zum einen werden die drei Buttons oben rechts angezeigt, zweitens wird unterhalb dem menü eine horizontale Linke von einigen cm Länge angezeigt.

habe gerade Screenshots angefertigt... aber ich habe kein webspace :(
bombilein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 31.08.04 17:55 
Um die Auswirkungen noch deutlicher zu beschreiben:

wenn ich jetzt auf den "wiederherstell-icon" klicke, wird dieses durch das minimier-icon ausgetauscht. und das soll nicht geschehen.
Viper
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 88



BeitragVerfasst: Di 31.08.04 18:10 
Hallo.

Wenn du möchtest, kannst du mir die Bilder via E-Mail schicken, dann stell ich sie Online.
Ich glaube aber, dass das nicht nötig ist. Wenn ich dich recht verstanden habe, möchtest du die drei Icons oben in der Formular-Leiste nicht angezeigt haben und das kannst du im Objektinspektor einstellen. Da gibt es die Eigenschaft Bordericons vom Formular. Dort kannst du einstellen, welche Icons angezeigt werden sollen, oder nicht.

_________________
"Der Sinussatz ist nur was für Leute, die Teichbesitzer mit Insel und Baum sind. Alle anderen können ihn vergessen" (Mein Mathe-Prof.)
bombilein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 31.08.04 18:16 
Hi Viper,

das hatte ich auch schon probiert. Das Problem war jedoch, wenn ich alle icons ausblende und dann einen Doppelklick auf die Titelleiste tätige, schmiert das ganze Programm ab.

Aber an sich will ich die drei Icons schon haben; aber solange keine Datei geöffnet ist, sollen diese einfach keine Auswirkungen haben, sie sollen von mir per hand sozusagen abgefangen werden.

Email kommt gleich.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 31.08.04 19:42 
Einen Message-Handler für Suche in: Delphi-Forum, Delphi-Library WM_SYSCOMMAND schreiben und wParam auf SC_MAXIMIZE testen...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
bombilein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 31.08.04 21:12 
Danke MOtzi.

das war die Lösung. Es funktioniert jetzt einwandfrei mit nachstehendem Code.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TfrmOrderView.WMSysCommand(var Msg: tWMSysCommand);
begin
  if(not Controller.GetScenarioActive()) then begin
     if(((Msg.CmdType and $FFF0) = SC_RESTORE) or
        ((Msg.CmdType and $FFF0) = SC_MAXIMIZE)) then begin
        ; // nothing
      end else
       DefaultHandler(Msg);
    end;
end;


aber ein paar kleine Fragen, damit ich nicht dumm sterben muss.

1. Wo finde ich mehr infos über "tWMSysCommand". in einer anderen doku als auch in der Delphi doku finde ich nur was über TMessage.

2. was bedeutet dies $FFF0! ich weiß gerade noch, dass das eine Zahl in hexdezimal-Darstellung ist.
Viper
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 88



BeitragVerfasst: Mi 01.09.04 11:52 
Dann hat sich ja alles geklärt. Da wäre ich sowieso nie draug gekommen. :roll:
Die E-Mail kann ich dann ja einfach löschen!

_________________
"Der Sinussatz ist nur was für Leute, die Teichbesitzer mit Insel und Baum sind. Alle anderen können ihn vergessen" (Mein Mathe-Prof.)
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mi 01.09.04 12:02 
1) Informationen zu Suche im MSDN WM_SYSCOMMAND und anderen Messages bekommst du im PSDK oder online im [url=www.msdn.microsoft.com]MSDN[/url].

2) Diese And-Verknüpfung mit $FFF0 ist dazu da um die untersten 4 Bits des Parameters auszublenden, da diese intern von Windows verwendet werden. Würde man diese nicht ausblenden könnten sie das Ergebnis des Vergleichs verfälschen. Das SDK schreibt dazu:
PSDK hat folgendes geschrieben:
In WM_SYSCOMMAND messages, the four low-order bits of the wParam parameter are used internally by the system. To obtain the correct result when testing the value of wParam, an application must combine the value 0xFFF0 with the wParam value by using the bitwise AND operator.

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!