Советы по Delphi. Версия 1.4.3 от 1.1.2001
Шрифт:
var
S: array[0..255] of Char;
B, R: TRect;
begin
with ACanvas, ARect do begin
case Format of
DT_LEFT:
ExtTextOut(Handle, Left + DX, Top + DY, ETO_OPAQUE or ETO_CLIPPED,@ARect, StrPCopy(S, Text), Length(Text), nil);
DT_RIGHT:
ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY,ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text),Length(Text), nil);
DT_CENTER:
ExtTextOut(Handle, Left + (Right - Left - TextWidth(Text)) div 2, Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect,StrPCopy(S, Text), Length(Text), nil);
end;
end;
end;
procedure TBEFStringGrid.DrawCell(Col, Row: Longint; Rect: TRect; State: TGridDrawState);
var
procedure Display(const S: string; Alignment: TAlignment);
const Formats: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
begin
WriteText(Canvas, Rect, 2, 2, S, Formats[Alignment]);
end;
begin
{
здесь задаем аргументы Col и Row, и форматируем как угодно ячейки }
case Row of
0: { Центрирование заголовков колонок }
if (Col < ColCount) then Display(Cells[Col,Row], taCenter)
else
{ Все другие данные имеют правое центрирование }
Display(Cells[Col,Row], taRight);
end;
end;
Выравнивание колонок StringGrid IV
Delphi 1
Создайте ваш собственный метод drawcell на примере того, что приведен ниже:
procedure Tsearchfrm.Grid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);
var l_oldalign : word;
begin
if (row=0) or (col<2) then grid1.canvas.font.style:= grid1.canvas.font.style+[fsbold]; {устанавливаем заголовок в жирном начертании}
if col<>1 then begin
l_oldalign:=settextalign(grid1.canvas.handle, ta_right);
{NB
использует для рисования правую сторону квадрата}
grid1.canvas.textrect(rect,rect.right-2, Rect.top+2,grid1.cells[col,row]);
settextalign(grid1.canvas.handle,l_oldalign);
end else begin
grid1.canvas.textrect(rect, rect.left+2, rect.top+2, grid1.cells[col,row]);
end;
grid1.canvas.font.style:= grid1.canvas.font.style-[fsbold];
end;
Покрашенный StringGrid I
Delphi 1
…вы можете попробовать использовать StringGrid. У него имеется свойство Objects, через которое вы можете назначать объекты. Создайте объект, содержащий переменную типа TColor, и назначьте это Objects[col,row], что позволит иметь к нему доступ в любое время. Назначьте событие OnDrawCell StringGrid, позволяющее рисовать текст ячейки правильного цвета. Чтобы убедиться, что ячейка выбрана, воспользуйтесь свойством Selection, содержащим то, что выбрал пользователь. Все это должно выглядеть приблизительно так:
type TStrColor = class(TObject)
public
Color : TColor; {вы могли бы также определить частные и публичные методы доступа}
end;
…
procedure TForm1.FormCreate(Sender:TObject)
var i,j : Integer;
begin
With StringList1 do
for i := 0 to ColCount-1
for j := 0 to RowCount-1 Objects[i,j] := TStrColor.Create;
end;
…
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);
var OldColor : TColor;
begin
with StringGrid1.Canvas do begin
OldColor := Font.Color;
Font.Color := (StringGrid1.Objects[col,row] as TStrColor).Color;
TextOut(Rect.Left+2, Rect.Top+2, StringGrid1.Cells[Col,Row]);
Font.Color := OldColor;
end;
end;
…
procedure TForm1.ProcessSelection(Sender: TObject);
Поделиться:
Популярные книги
Сама себе хозяйка
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сердце Дракона. Том 11
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Первый среди равных. Книга IV
4. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неучтенный. Дилогия
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Мастер Разума IV
4. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Авиатор: назад в СССР
1. Авиатор
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Кадры решают все
2. Элита элит
Фантастика:
боевая фантастика
попаданцы
альтернативная история
8.09
рейтинг книги
Плеяда
Проза:
военная проза
русская классическая проза
5.00
рейтинг книги
Потусторонний. Книга 2
2. Господин Артемьев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ученик. Книга 4
4. Ученик
Фантастика:
фэнтези
5.67
рейтинг книги
Законник Российской Империи. Том 3
3. Словом и делом
Фантастика:
городское фэнтези
альтернативная история
аниме
дорама
5.00
рейтинг книги
Ваше Сиятельство 7
7. Ваше Сиятельство
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Война
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Младший сын князя. Том 4
4. Аналитик
Фантастика:
фэнтези
аниме
5.00