Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

fori := 0 togrid.colcount-1 do begin

max := 0;

forj := 0 togrid.rowcount-1 do begin

temp := grid.canvas.textWidth(grid.cells[i,j]);

iftemp > max thenmax := temp;

end;

grid.colWidths[i] := max + grid.gridLineWidth +1;

end;

Вероятно, вам необходимо будет добавить +1, чтобы текст не прилипал к границам ячеек.

Выравнивание колонок StringGrid III

Вот некоторый код, который делает то, что вы хотите:

procedureWriteText(ACanvas: TCanvas; constARect: TRect; DX, DY: Integer; constText: string; Format: Word);

var

S: array[0..255] ofChar;

B, R: TRect;

begin

withACanvas, ARect do begin

caseFormat of

DT_LEFT:

ExtTextOut(Handle, Left + DX, Top + DY, ETO_OPAQUE orETO_CLIPPED,@ARect, StrPCopy(S, Text), Length(Text), nil);

DT_RIGHT:

ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY,ETO_OPAQUE orETO_CLIPPED, @ARect, StrPCopy(S, Text),Length(Text), nil);

DT_CENTER:

ExtTextOut(Handle, Left + (Right - Left - TextWidth(Text)) div2, Top + DY, ETO_OPAQUE orETO_CLIPPED, @ARect,StrPCopy(S, Text), Length(Text), nil);

end;

end;

end;

procedureTBEFStringGrid.DrawCell(Col, Row: Longint; Rect: TRect; State: TGridDrawState);

var

procedureDisplay( constS: string; Alignment: TAlignment);

constFormats: array[TAlignment] ofWord = (DT_LEFT, DT_RIGHT, DT_CENTER);

begin

WriteText(Canvas, Rect, 2, 2, S, Formats[Alignment]);

end;

begin

{ здесь задаем аргументы Col и Row, и форматируем как угодно ячейки }

caseRow of

0: { Центрирование заголовков колонок }

if(Col < ColCount) thenDisplay(Cells[Col,Row], taCenter)

else

{ Все другие данные имеют правое центрирование }

Display(Cells[Col,Row], taRight);

end;

end;

Выравнивание колонок StringGrid IV

Delphi 1

Создайте ваш собственный метод drawcell на примере того, что приведен ниже:

procedureTsearchfrm.Grid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

varl_oldalign : word;

begin

if (row=0) or(col<2) thengrid1.canvas.font.style:= grid1.canvas.font.style+[fsbold]; {устанавливаем заголовок в жирном начертании}

ifcol<>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, содержащим то, что выбрал пользователь. Все это должно выглядеть приблизительно так:

typeTStrColor = class(TObject)

public

Color : TColor; {вы могли бы также определить частные и публичные методы доступа}

end;

procedureTForm1.FormCreate(Sender:TObject)

vari,j : Integer;

begin

WithStringList1 do

fori := 0 toColCount-1

forj := 0 toRowCount-1 Objects[i,j] := TStrColor.Create;

end;

procedureTForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

varOldColor : TColor;

begin

withStringGrid1.Canvas do begin

OldColor := Font.Color;

Font.Color := (StringGrid1.Objects[col,row] asTStrColor).Color;

TextOut(Rect.Left+2, Rect.Top+2, StringGrid1.Cells[Col,Row]);

Font.Color := OldColor;

end;

end;

procedureTForm1.ProcessSelection(Sender: TObject);

vari, j : Integer;

begin

WithStringGrid1.Selection do

For i := left toright do

for j := top tobottom do

MessageDlg(IntToStr(i) + ',' + IntToStr(j) + '-' + IntToStr((StringGrid1.Objects[i,j] aststrcolor).color), mtInformation, [mbOk], 0);

end;

Этот компонент не позволяет делать многочисленный выбор….

Покрашенный StringGrid II

Delphi 1

В данном модуле демонстрируется техника изменения цвета у выводимого в StringGrid текста.

unitStrgr;

interface

usesSysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, DB;

typeTForm1 = class(TForm)

StringGrid1: TStringGrid;

procedureStringGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

private

{ Private declarations }

public

{ Public declarations }

end;

varForm1: TForm1;

implementation

{$R *.DFM}

procedureTForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

constCharOffset = 3;

begin

withStringGrid1.canvas do begin

font.color := clMaroon;

textout(rect.left + CharOffset, rect.top + CharOffset, 'L');

font.color := clNavy;

textout(rect.left + CharOffset + TextWidth('L'), rect.top + CharOffset, 'loyd');

end;

end;

end.

Редактирование в StringGrid

Delphi 1

…правда, я этого не пробовал, но в голову пришли две идеи:

1. Нажмите на втором поле редактировании, переведите фокус на другое поле (например, x.focus, где x не сетка), сбросьте goEditing и selectRow и затем верните фокус назад сетке. (Эта техника работала у меня в нескольких местах, например, в градах и мемах.)

2. Нажмите на втором поле редактирования, и после сброса goEditing и selectRow, попробуйте создать tGridRect, подсвечивающий нужную вам строку, после чего делайте grid.Selection := gridRect;

Tabbednotebook

Tabbednotebook и куча ресурсов

Тема: Как избежать использования кучи ресурсов (Resource Heap) при работе с TabbedNotebook

Данный документ расскажет о том, как с помощью Object Pascal можно управлять числом активных handlesWindows (оконных дескрипторов), в особенности кучей ресурсов пользователя (User Resource heap), а также следить за этими показателями. О чем этот документ? Попробую коротко и доходчиво: Windows следит за каждым элементом, имеющим фокус, через его дескриптор (Handle). Исходя из этого, Windows не может одновременно поддерживать несколько оконных дескрипторов (4-байтных указателей), и в этом совете мы приведем простой пример кода, позволяющего «легко» загружать ресурсы и обходить эти ограничения, встающие перед разработчиками Delphi.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x