Ja tu czegoś nie qmam :]

0

Witam fachowców z 4programmers i prosze o pomoc w troche dziwnej sprawie. :-}
Otóż jest sobie procedura obsługi zdarzenia OnClick standartowego przycisku uzupełniona następująco :

procedure TForm1.B640Click(Sender: TObject);
begin
resMen.ExecuteChange(640,480);
end;

W takiej postaci nie działa to według moich oczekiwań (rozdzielczość się nie zmienia). Oczywista odpowiedź brzmi Metoda Execute Change komponentu jest źle zapisana ale... jezeli uzupełnie rocedure np w taki sposób :

procedure TForm1.B640Click(Sender: TObject);
begin
ShowMessage('A');
resMen.ExecuteChange(640,480);
end;

wtedy wszystko działa ok. (gdyby coś było nie tak z w/w metoda to nie powinna działać w zadnej z 2 w/w procedur)
I o co tu biega ?

Proszę o pomoc siedze juz pare ładnych godzin i jakos nie mam koncepcji na ten dziwaczny problem [???]

tak na wszelki wypadek przytocze jeszcze treść metody execute Change jest ona przeciążona do 3 postaci ale w najprostrzej z nich wygląda tak :

function TResMen.ExecuteChange(NewWidth, NewHeight, NewBPi, NewFreq: Cardinal):LongInt;
var Mode:TDeviceMode;
begin
With Mode do
Begin
dmBitsPerPel :=NewBpi;
dmPelsWidth :=NewWidth;
dmPelsHeight :=NewHeight;
dmDisplayFrequency:=NewFreq;
dmFields :=TflagsToFlags(FFlags);
End;

Result:=ChangeDisplaySettings(Mode,TChangeModeToMode(FChangeMode));
end;

0

Ok już sobie poradziłem z problemem brakowało
dmSize:=SizeOf(Mode);

Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1