Jak umieścić znak w prawym dolnym rogu konsoli ?</delphi>
0
0
GotoXY() + Write() + F1
0
ehhhh.... sprecyzuje sie.
Domyślnie stawiając znak na koncu lini kursor przechodzi do nowej lini.
Jeśli nie ma następnej lini (gdy jesteśmy w ostatniej) tworzona jest nowa linia i wszystko przewija sie o linie do góry.
Znalazłem funkcje SetConsoleMode (kernel32.dll), w ktorej ustawia sie tryb dzialania konsoli, ale zeby jej uzyc trzeba kilku nowych lini kodu.
Znak ktoś może szybszy/łatwiejszy sposób ?
0
Sposób jest. (nie wiem czy prostrzy/szybszy). Ale działa. Ustawia po prostu znak w konsoli.
procedure SetCharXY(x,y:word;c:char);
//ustawia znak c konsoli w punkcie (X,Y)
const s:_COORD=(x:1;y:1);
s2:_COORD=(x:0;y:0);
var a:CHAR_INFO;
r:_SMALL_RECT;
begin
a.AsciiChar:=c;
a.Attributes:=7; //7 to białe na czarnym
r.Left:=x;
r.Right:=x;
r.Top:=y;
r.Bottom:=y;
WriteConsoleOutput(WConsole,@a,s,s2,r);
end;
0
Dzieki.
Napisałem jeszcze gotową procedurke wyłączającą/włączającą przechodzenia do nowej linii, gdy osiągniemy koniec:
uses
Windows;
procedure WrapAtEol(Wrap: Boolean);
var
OutputHandle: HWND;
Mode: LongWord;
begin
OutputHandle := GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleMode(OutputHandle, Mode);
if Wrap then
Mode := Mode and ENABLE_WRAP_AT_EOL_OUTPUT
else
Mode := Mode and (not ENABLE_WRAP_AT_EOL_OUTPUT);
SetConsoleMode(OutputHandle, Mode);
end;