Валентин Озеров - Советы по 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 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Например, если в вашем проекте используется TDBGrid, то иконки кнопок компонента DBNavigator могут линковаться вашей программой, и их можно загрузить для использования в ваших speedbutton следующим образом:

SpeedButton.Caption := '';

SpeedButton1.Glyph.LoadFromResourcename(HInstance,'DBN_REFRESH');

SpeedButton1.NumGlyphs := 2;

Другие зарезервированные имена:

DBN_PRIOR, DBN_DELETE, DBN_CANCEL, DBN_EDIT, DBN_FIRST, DBN_INSERT, DBN_LAST, DBN_NEXT, DBN_POST

Все имена должны использовать верхний регистр.

– Dennis Passmore

StringGrid

Обновление картинки в ячейке StringGrid

SottNickсоветует:

Если в таблице вы используете событие OnDrawCell для помещения в ячейку рисунка, причем различного, в зависимости, например, от соответствующего значения в двумерном массиве, и вам надо, чтобы после изменения значения в массиве обновилось изображение (Refresh не подходит, т.к. будет мелькать), то измените значение у ячейки (DrawGrid не годится):

StringGrid1.Cells[i,j]:='';

или

StringGrid1.Cells[i,j]:=StringGrid1.Cells[i,j];

если там что-то хранится.

Многострочность в заголовках колонок StringGrid

У меня есть StringGrid, который выглядит очень красивым, за исключением заголовков колонок, где я хотел бы иметь их размер равным 1 ячейке, но с заголовком, размещенным в нескольких строках, например,

Индекс Фондовой Биржи

показывалось бы как

Индекс

Фондовой

Биржи

было бы классно, если можно было этот заголовок размещать еще и по центру.

Рисовать сами ячейки вы можете в обработчике события OnDrawCell. Для определения ячейки (заголовок?), обрабатываемой в текущий момент, используйте параметр GridState.

Я выводил тест с помощью обычных методов рисования (которые хорошо "приживаются" в данном компоненте), с поддержкой вертикального выравнивания, полей и переноса слов. Вот сам код:

TFTVerticalAlignment = (vaTop, vaMiddle, vaBottom);

procedureDrawTextAligned( constText: string; Canvas: TCanvas; varRect: TRect; Alignment: TAlignment; VerticalAlignment: TFTVerticalAlignment; WordWrap: Boolean);

var

P : array[0..255] ofChar;

H : Integer;

T : TRect;

F : Word;

begin

StrPCopy(P, Text);

T := Rect;

withCanvas, Rect do begin

F := DT_CALCRECT orDT_EXPANDTABS orDT_VCENTER orTextAlignments[Alignment];

ifWordWrap thenF := F orDT_WORDBREAK;

H := DrawText(Handle, P, -1, T, F);

H := MinInt(H,Rect.Bottom - Rect.Top);

ifVerticalAlignment = vaMiddle then begin

Top := ((Bottom+Top) - H) div2;

Bottom := Top + H;

end else ifVerticalAlignment = vaBottom thenTop := Bottom - H - 1;

F := DT_EXPANDTABS orDT_VCENTER orTextAlignments[Alignment];

ifWordWrap thenF := F orDT_WORDBREAK;

DrawText(Handle, P, –1, Rect, F);

end;

end;

– Rick Roger

StringGrid без выделенной ячейки

Я пытаюсь показать StringGrid без выделенной ячейки. Первая нефиксированная ячейка всегда имеет состояние "инвертированного" цвета. Я не хочу позволить пользователю редактировать сетку, но эта выделенная ячейка производит впечатление того, что сетка имеет возможность редактирования…

Вам необходимо создать обработчик события OnDrawCell. Это легче чем вы думаете. Вот образец кода, который сделает вас счастливым:

procedureTForm.sgrDrawCells(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

var

ACol: longint absoluteCol;

ARow: longint absoluteRow;

Buf: array[byte] ofchar;

begin

ifState = gdFixed thenExit;

withsgrGrid do begin

Canvas.Font := Font;

Canvas.Font.Color := clWindowText;

Canvas.Brush.Color := clWindow;

Canvas.FillRect(Rect);

StrPCopy(Buf, Cells[ACol,ARow]);

DrawText(Canvas.Handle, Buf, -1, Rect, DT_SINGLELINE orDT_VCENTER orDT_NOCLIP orDT_LEFT);

end;

end;

– Jeff Fisher

Один щелчок на StringGrid вместо трех

Как сделать так, чтобы после ПЕРВОГО щелчка на ячейке возможно было бы начать редактировать ее содержимое?

Включите goAlwaysShowEditor в свойство TStringGrid Options.

– Rick Rogers

StringGrid как DBGrid

Delphi 1

Ну это может выглядеть приблизительно так (возможно нужна некоторая доработка, написал от руки, не проверяя):

table.first;

row := 0;

grid.rowcount := table.recordCount;

while nottable.eof do begin

for i := 0 totable.fieldCount-1 do

grid.cells[i,row] := table.fields[i].asString;

inc(row);

table.next;

end;

У меня тоже имееются свои причины использования TStringGrid. Вот мой код, который загружает данные из отфильтрованной таблицы. Он не очень изящен, т.к. реально является лишь черновиком. У меня это работает, а большего мне и не нужно. Работает очень быстро, даже в случае сотни загруженных колонок. Есть много ссылок на внешние переменные. Надеюсь что они не слишком заумные.

PROCEDURE TformLookupDB.FillCells;

VAR

Row, i :INTEGER

w :INTEGER

grid :TStringGrid

BEGIN

doGrid.RowCount := 0;

IF NOTASSIGNED(fDB) THENEXIT;

Row := 0;

FORi := LOW(fColWidths) TOHIGH(fColWidths) DOfColWidths[i] := 100

// Данный временный объект-сетка используется для предохранения от огромного

// количества подразумеваемых событий Application.ProcessMessages,

// инициируемых базой данных, и вызывающих противное моргание объекта

// doGrid. Итак, мы загружаем данные в объект-сетку

// и затем копируем их в стобцы, начиная с верхней части.

grid := TStringGrid.Create(Self);

grid.Visible := FALSE;

WITHfDB DO TRY

grid.ColCount := fFields.Count;

DisableControls;

// Фильтр был установлен с помощью свойства Self.Filter

First;

WHILE NOTEOF DO TRY

grid.RowCount := Row+1;

FORi := 0 TOgrid.ColCount-1 DO BEGIN

grid.Cells[i,Row] :=FieldByName(fFields.Strings[i]).AsString

w := doGrid.Canvas.TEXTWIDTH(grid.Cells[i,Row]);

IFfColWidths[i]THENfColWidths[i] := w;

END

INC(Row);

FINALLY

Next;

END

FINALLY

doGrid.RowCount := grid.RowCount;

doGrid.ColCount := grid.ColCount;

FORi := 0 TOgrid.ColCount-1 DO BEGIN

doGrid.Cols[i] := grid.Cols[i];

doGrid.ColWidths[i] := fColWidths[i] + 4

END

grid.Free;

EnableControls

END

END;

`Авторазмер` для StringGrid

…да, реально это утомляет, но эту проблему можно решить программным путем (это нужно делать после того, как вы загрузите данные, или же, если вы загружаете данные по столбцам, их загружать в самом цикле, приведенном ниже):

i, j, temp, max: integer;

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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