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

Здесь есть возможность читать онлайн «Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Советы по Delphi. Версия 1.4.3 от 1.1.2001: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Советы по Delphi. Версия 1.4.3 от 1.1.2001»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Советы по Delphi. Версия 1.4.3 от 1.1.2001», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Добавление к TDBGrid события OnClick

Delphi 1

TGroothuisGrid = class() {!}

published

propertyOnClick;

end;

Это все! OnClick уже объявлен в TControl как защищенное свойство. Все, что вы должны сделать, это опубликовать это свойство в компоненте-наследнике, зарегистрировать его (смотри гл. 8 Руководства по созданию компонентов, Component Writer's Guide) и использовать взамен TDBGrid.

Позиция ячейки в TDBGrid

Delphi 1

В TCustomGrid определен метод CellRect, который, к сожалению, защищен. Это означает, что даный метод доступен только для TCustomGrid и его наследников. Но все-таки существует немного мудреное решение вызова данного метода:

typeTMyDBGrid = class(TDBGrid)

public

functionCellRect(ACol, ARow: Longint): TRect;

end;

functionTMyDBGrid.CellRect(ACol, ARow: Longint): TRect;

begin

Result := inheritedCellRect(ACol, ARow);

end;

Вы можете сделать приведение типа вашего DBGrid к TMyDBGrid (это возможно, поскольку CellRect статический метод) и вызвать CellRect:

Rectangle := TMyDBGrid(SomeDBGrid).CellRect(SomeColumn, SomeRow);

procedureTfmLoadIn.DBGrid1DrawColumnCell(Sender: TObject; constRect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);

constDisp = 2; //Правильно выравниваем компонент

begin

inherited;

if(gdFocused inState) then begin

if(Column.FieldName = 'TYPEDescription') then begin

dlTYPEDescription.Left := Rect.Left + DBGrid1.Left + Disp;

dlTYPEDescription.Top := Rect.Top + DBGrid1.top + Disp;

dlTYPEDescription.Width := Rect.Right – Rect.Left;

dlTYPEDescription.Height := Rect.Bottom – Rect.Top;

dlTYPEDescription.Visible := True;

end;

end;

end;

Dbgrid с цветными ячейками VI

Delphi 1

Установите defaultDrawing в false, и создайте собственный onDrawDataCell, в котором и задавайте нужный вам цвет ячеек. Примерно так:

procedureTform1.DBgrid1DrawDataCell(Sender: TObject; constRect: TRect; Field: TField; State: TGridDrawState);

begin

{ выберите цвет для текста (font.color) и фона (brush.color) }

if(field = table1Status) then begin

{ белый на красном }

DBgrid1.canvas.font.color := clWhite;

DBgrid1.canvas.brush.color := clRed;

end else begin

{ черное на белом }

DBgrid1.canvas.brush.color := clWhite;

DBgrid1.canvas.font.color := clBlack;

end;

{ рисуем ячейку }

DBgrid1.canvas.textrect(rect, rect.left+2, rect.top+2, field.asString);

end;

procedureTMainForm.CharGridDrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

varTheText: string;

begin

TheText := CharGrid.Cells[Col, Row];

withCharGrid.Canvas do begin

{ Определяем цвет фона в зависимости от состояния ячейки: }

ifgdFocused inState thenBrush.Color := clYellow {Цвет ячейки с фокусом}

else ifgdSelected inState thenBrush.Color := clOlive {Цвет выбранной ячейки}

else{ячейка не имеет фокуса и не выбрана}

ifIntFromStr(TheText) <> 0 thenBrush.Color := clNavy {Цвет фона подсвеченной ячейки}

elseBrush.Color := clWhite; {Цвет фона нормальной ячейки}

{ Определяем цвет текста: }

ifIntFromStr(TheText) <> 0 thenFont.Color := clRed {Цвет текста подсвеченной ячейки}

elseFont.Color := clNavy; {Цвет текста нормальной ячейки}

TextRect(Rect, Rect.Left + 2, Rect.Top + 2, TheText);

end; {with CharGrid.Canvas}

end;

Показ Memo-поля в Dbgrid

Delphi 1

…я все же лелею надежду, что когда-нибудь увижу TMemoField.DataSize, имеющим значение, отличное от нуля. Может быть значение DataSize является размером части Memo, которая сохранилась в .db-файле? Вместо этого я теперь пользуюсь объектом TBlobStream, который вполне хорошо справляется с этой работой. Все это у меня происходит примерно так:

Var

pBuffer: PChar;

Blob: TBlobStream;

begin

{FDataField – это TMemoField}

Blob := TBlobStream.Create(FDataField, bmRead);

try

if Blob.Size > 0 then try

GetMem(pBuffer, Blob.Size);

Blob.Read(pBuffer^, Blob.Size);

{ что-то тут делаем }

FreeMem(pBuffer, Blob.Size);

except

ShowMessage('Нехватка памяти' );

end;

finally

Blob.Free

end;

Как определить изменение фокуса строки в TDBGrid?

Используйте событие OnDataChange объекта Datasource, соединенного с DBGrid. Если параметр State в обработчике событие равен dsBrowse, значит вы перешли в новую строку (или только что открыли таблицу).

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

Интервал:

Закладка:

Сделать

Похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Представляем Вашему вниманию похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Обсуждение, отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x