2
Delphi中的簡單問題。我創建了一個控制檯應用程序,如果它少於80行,我需要將控制檯窗口的高度更改爲80行。這需要從代碼完成,並且實際上是在代碼內的條件。 (即,當發生錯誤時,它增加了控制檯的大小,因此整個(巨大的)錯誤報告是可見的。)
請記住,這是一個控制檯應用程序!當它啓動時,它使用默認控制檯,我需要改變!更改控制檯大小
Delphi中的簡單問題。我創建了一個控制檯應用程序,如果它少於80行,我需要將控制檯窗口的高度更改爲80行。這需要從代碼完成,並且實際上是在代碼內的條件。 (即,當發生錯誤時,它增加了控制檯的大小,因此整個(巨大的)錯誤報告是可見的。)
請記住,這是一個控制檯應用程序!當它啓動時,它使用默認控制檯,我需要改變!更改控制檯大小
當調用SetConsoleWindowInfo()時,傳遞給控制檯的Left和Top值至少應爲1而不是0.問題已解決。
我現在這樣做:
var
Rect: TSmallRect;
Coord: TCoord;
begin
Rect.Left := 1;
Rect.Top := 1;
Rect.Right := 80;
Rect.Bottom := 60;
Coord.X := Rect.Right + 1 - Rect.Left;
Coord.y := Rect.Bottom + 1 - Rect.Top;
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), Coord);
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), True, Rect);
procedure SetConsoleWindow(NewWidth : integer;NewHeight : integer);
var
Rect: TSmallRect;
Coord: TCoord;
begin { SetConsoleWindow }
Coord.X := NewWidth;
Coord.y := NewHeight;
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), Coord);
Rect.Left := 0; // must be zero
Rect.Top := 0;
Rect.Right := Coord.X - (Rect.Left + 1);
Rect.Bottom := Coord.y - (Rect.Top + 1);
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), True, Rect);
end; { SetConsoleWindow }