» »

Delphi - Kako spremeniti barvo samo enemu znaku?

Delphi - Kako spremeniti barvo samo enemu znaku?

coolijo ::

Ojla!

Imam problem pri izdelavi koledarja. Za prikaz dnevov izbranega meseca uporabljam tabelo. Zalomilo se mi je, ko sem hotel tiste dneve v mesecu, ki pridejo na nedeljo ali na praznik, prikazati z drugačno barvo. Uporabil sem ukaz font.color, toda ko se je ta ukaz izvedel, se je barva vsega texta na oknu spremenila, in ne samo eden znak.

Pozna mogoče kdo ukaz, ki spremeni barvo samo enemu znaki, ali pa če mi lahko kdo svetuje kako bi drugače to lahko označil.


Lp

podtalje ::

Razred Tabela v delfiju ne obstaja.

Še najbližje mu je StringGrid.
Če hočeš v njem spremeniti barvo, moraš v OnDrawCell event napisati kodo v stilu:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: GridDrawState);
begin
if Acol=1 then
begin
With StringGrid1 do
begin
Canvas.Brush.color:=clRed;
Canvas.fillRect(Rect);
Canvas.Font.Color:=clWhite;
Canvas.TextOut(Rect.Left+2,Rect.Top+1,Cells[ACol,ARow]);
end;
end
end;

coolijo ::

Ja, uporabljam StringGrid.

Sem probu tam v eventu izbrati ondrawcell pa mi je napisalo property and method StringGrid not compatible.

Lahko malo več napises o tej proceduri? Jo moram klicati s kaksnimi parametri? Ko sem jo rocno skopiral, mi je vrglo kup errorjev:
Undeclared identifier: 'GridDrawState' -> procedure TForm1.koledarDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: GridDrawState);

Undeclared identifier: 'Acol' -> if Acol=1 then
Undeclared identifier: 'StringGrid'' -> With koledar do
Undeclared identifier: 'Canvas' -> Canvas.Brush.color:=clRed;
Missing operator or semicolon -> Canvas.Brush.color:=clRed;
Missing operator or semicolon -> Canvas.Font.Color:=clWhite;
Missing operator or semicolon -> Canvas.TextOut(Rect.Left+2,Rect.Top+1,Cells[ACol,ARow]);
There is no overloaded version of 'Rect' that can be called with these arguments -> Canvas.fillRect(Rect);
Undeclared identifier: 'ARow' -> Canvas.TextOut(Rect.Left+2,Rect.Top+1,Cells[ACol,ARow]);

thx

Gandalfar ::

sej ti je napisu, OnDrawCell event moras spremenit in napisati notr tisto kodo. Pa kaksen Delphi tutorial si preberi, da bos spoznal cemu eventi sluzijo.

podtalje ::

V object inspectorju (levo okno) izberi Events.
Nato dvoklikni v sosedno polje tam, kjer je izpisano OnDrawCell.

Delphi ti bo sam naredil proceduro.
Nato pa notri daj paste:

if Acol=1 then
begin
With StringGrid1 do
begin
Canvas.Brush.color:=clRed;
Canvas.fillRect(Rect);
Canvas.Font.Color:=clWhite;
Canvas.TextOut(Rect.Left+2,Rect.Top+1,Cells[ACol,ARow]);
end;
end;


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] ukaz radirka

Oddelek: Programiranje
91113 (906) japol
»

Programiranje problem android

Oddelek: Programiranje
51173 (938) g333kk
»

Android zamenjava pogledov

Oddelek: Programiranje
61079 (900) c00L3r
»

android črta

Oddelek: Programiranje
412399 (1670) g333kk
»

Dodajanje ukazov v menije (OpenDialog1, SaveDialog1)

Oddelek: Programiranje
13983 (876) CHAOS

Več podobnih tem