Изменение размера консоли - PullRequest
2 голосов
/ 18 октября 2010

Простая проблема в Delphi. Я создал консольное приложение, и мне нужно изменить высоту консольного окна до 80 строк, если оно меньше 80 строк. Это должно быть сделано из кода и фактически является условным в коде. (То есть, когда возникает ошибка, она увеличивает размер консоли, поэтому весь (огромный) отчет об ошибках виден.) Имейте в виду, что это консольное приложение! Когда он запускается, он использует консоль по умолчанию, которую мне нужно изменить!

Ответы [ 2 ]

6 голосов
/ 18 октября 2010

При вызове SetConsoleWindowInfo () значения для Left и Top, которые передаются на консоль, должны быть как минимум 1, а не 0. Проблема решена.

Теперь я делаю это:

uses
  Windows;

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);
end;
0 голосов
/ 30 ноября 2017
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 }
...