Нет. Проблема в том, что ActiveControl – RadioButton, а не RadioButtonGroup. Поместите следующий код в обработчик события формы OnShow, он должен решить вашу проблему:
procedureTForm1.FormShow(Sender: TObject);
varc: integer;
begin
withRadioGroup1 do begin
forc := 0 toControlCount – 1 doTRadioButton(Controls[c]).HelpContext := HelpContext;
end;
end;
– Ralph Friedman
TScrollBar в Delphi мигает при получении фокуса. Как избежать этого мерцания?
Такая же проблема и при перемещении стандартного бегунка полосы прокрутки. Лечится одинаково: установкой свойства TabStop в False.
– Rick Rogers
Могу ли я из ресурсов поочередно загружать глифы для кнопок speedbutton и, если да, то как это сделать?
Например, если в вашем проекте используется 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
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;
Читать дальше