Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по компонентам для Delphi, C++ Builder

Модерирует : ShIvADeSt

ShIvADeSt (06-04-2006 01:56): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=6607  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

boddy2

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А почему прямо не воткнуть?

Цитата:
 
Как показывать нестандартный встроенный редактор (inplace editor) в ячейке stringgrid (например combobox).  
См. пример  
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  {Высоту combobox'а не изменишь, так что вместо combobox'а
     будем изменять высоту строки grid'а !}
  StringGrid1.DefaultRowHeight := ComboBox1.Height;
  {Спрятать combobox}
  ComboBox1.Visible := False;
  ComboBox1.Items.Add('Delphi Kingdom');
  ComboBox1.Items.Add('Королевство Дельфи');
end;
 
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  {Перебросим выбранное в значение из ComboBox в grid}
  StringGrid1.Cells[StringGrid1.Col,
  StringGrid1.Row] :=ComboBox1.Items[ComboBox1.ItemIndex];
  ComboBox1.Visible := False;
  StringGrid1.SetFocus;
end;
 
procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
  {Перебросим выбранное в значение из ComboBox в grid}
  StringGrid1.Cells[StringGrid1.Col,
  StringGrid1.Row] :=ComboBox1.Items[ComboBox1.ItemIndex];
  ComboBox1.Visible := False;
  StringGrid1.SetFocus;
end;
 
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
          ARow: Integer; var CanSelect: Boolean);
var
  R: TRect;
begin
  if ((ACol = 3) AND (ARow <> 0)) then
    begin
      {Ширина и положение ComboBox должно соответствовать
                ячейке StringGrid}
      R := StringGrid1.CellRect(ACol, ARow);
      R.Left := R.Left + StringGrid1.Left;
      R.Right := R.Right + StringGrid1.Left;
      R.Top := R.Top + StringGrid1.Top;
      R.Bottom := R.Bottom + StringGrid1.Top;
      ComboBox1.Left := R.Left + 1;
      ComboBox1.Top := R.Top + 1;
      ComboBox1.Width := (R.Right + 1) - R.Left;
      ComboBox1.Height := (R.Bottom + 1) - R.Top;
      {Покажем combobox}
      ComboBox1.Visible := True;
      ComboBox1.SetFocus;
    end;
  CanSelect := True;
end;
 
 


Всего записей: 326 | Зарегистр. 27-05-2004 | Отправлено: 19:21 21-02-2006
QuickeneR

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boddy2
Спасибо, попробую. Радует, что народ уже пытался такое сделать. Если получится достаточно красиво (обработка сгруппирована в одном месте) и надежно (правильная реакция на события), так и сделаю.

Всего записей: 1388 | Зарегистр. 02-02-2002 | Отправлено: 19:38 21-02-2006
enola

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сорри за оффтоп
тест: проверка количества постов

Всего записей: 182 | Зарегистр. 22-04-2005 | Отправлено: 07:46 22-02-2006 | Исправлено: enola, 07:48 22-02-2006
Hmmmm



сто лет одиночества
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет программерам!
 
Нужно в стандартном DBGrid в поле Boolean выводить чеквох, возможно ли?
 
Спасибо.

Всего записей: 4686 | Зарегистр. 24-03-2002 | Отправлено: 09:43 22-02-2006
gpi

Alone Wanderer
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hmmmm
Статья из Delphi World:

Цитата:
procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);
var
  DrawFlags: Integer;
begin
  Canvas.TextRect(Rect, Rect.Left + 1, Rect.Top + 1, ' ');
  DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_ADJUSTRECT);
  DrawFlags := DFCS_BUTTONCHECK or DFCS_ADJUSTRECT;// DFCS_BUTTONCHECK
  if Checked then
    DrawFlags := DrawFlags or DFCS_CHECKED;
  DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DrawFlags);
end;
 
На событие OnDrawColumnCell повесьте вызов процедуры DrawGridCheckBox():  
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if Column.FieldName = 'WEIGHT' then // Модифицируйте под себя
    if Column.Field.AsInteger > 10 then  // Модифицируйте под себя
      DrawGridCheckBox(DBGrid1.Canvas, Rect, true)
    else
      DrawGridCheckBox(DBGrid1.Canvas, Rect, false)
end;
 
Кроме этого, для скрытия текста в ячейках с CheckBox-ом от отображения значения при вводе с клавиатуры определите реакцию на событие OnColumnEnter:  
 
procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
  with TDBGrid(Sender) do
    if SelectedField.FieldName = 'Weight' then // Модифицируйте под себя
      Options := Options - [dgEditing]
    else
      Options := Options + [dgEditing]
end;

Всего записей: 432 | Зарегистр. 30-05-2004 | Отправлено: 10:21 22-02-2006
Hmmmm



сто лет одиночества
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gpi
 
Спасибо, работает нормально, но.. а какже мне теперь редактировать.
 
PS: А.. разобрался, спасибо.

Всего записей: 4686 | Зарегистр. 24-03-2002 | Отправлено: 11:13 22-02-2006 | Исправлено: Hmmmm, 11:25 22-02-2006
gpi

Alone Wanderer
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hmmmm
Можно попробовать обрабатывать DBGrid1CellClick, анализируя Column.
Вот только не знаю, насколько быстро будет выполняться Repaint или Refresh после изменений в поле

Всего записей: 432 | Зарегистр. 30-05-2004 | Отправлено: 11:28 22-02-2006
sea78



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В свое время пользовался RxLib ... удобная вещь, сейчас вот не нашел нормальной сборки под BDS 2006 .Net хотел поинтересоваться а есть ли какая нить ему замена (бесплатная естественно).

Всего записей: 119 | Зарегистр. 24-01-2006 | Отправлено: 03:20 26-02-2006
alexsob

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hmmmm
А чем плох EhLib - старый-добрый-бесплатный 3.6? Много за собой не тянет, есть CheckBox и вообще много такого, что в это почти стандарт DBGrid (как в свое время был RxLib).
Конечно, функционал у Developer Express будет поболее, но 95% потребностей EhLib покрывает, как девицы не тормизит и вообще, как сейчас говорит молодежь, полный "Рулез".

Всего записей: 127 | Зарегистр. 28-02-2005 | Отправлено: 07:45 26-02-2006
Varenik



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
sea78
Проект RxLib продолжает проект JEDI

----------
Если нравится, считайте, что получилось…

Всего записей: 1767 | Зарегистр. 21-07-2001 | Отправлено: 08:12 26-02-2006
enola

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
Народ помогите освоить компонент dxDBTreeView, никогда раньше не строил деревьев. Маленький примерчик был бы кстати.

Всего записей: 182 | Зарегистр. 22-04-2005 | Отправлено: 08:49 26-02-2006
sea78



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Varenik
спасибо

Всего записей: 119 | Зарегистр. 24-01-2006 | Отправлено: 11:31 26-02-2006
Figaro2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
enola

Примеры и в дистрибутиве идут хорошие.  А начинать надо со структуры БД или запроса -
таблица или запрос с полями ID,  ParentID, Name ... то есть идентификатор записи,  ее родителя и строка, которая будет отображена в дереве

Всего записей: 245 | Зарегистр. 24-09-2005 | Отправлено: 13:58 26-02-2006
enola

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Figaro2000
 
понятно, что с запроса, все есть и таблица и БД и запрос.
разобрался уже с DBTree, спасибо.
 
можно еще вопросики:
1. чем отличаются dxDBTreeView и cxDBTreeList?
2. какой DBGrid использовать посоветуете?
3. примеры вот что-то я не нашел, где они могуть быть?

Всего записей: 182 | Зарегистр. 22-04-2005 | Отправлено: 15:28 26-02-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
enola

Цитата:
dxDBTreeView и cxDBTreeList

Если не ошибаюсь, то разные категории библиотек - пару страниц назад обсуждалось чем отличаются cx и dx категори компонентов.

Цитата:
какой DBGrid использовать посоветуете?

Конечно же cxGrid ! Еще очень неплохой EhLib.

Цитата:
примеры вот что-то я не нашел, где они могуть быть?

Примеры для DevExpress, как правило находятся в папке Demos внутри папки, куда были инсталлированы сорцы.

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 21:24 26-02-2006
Leo3000

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кто нибудь знает где хапнуть ACE Reporter 1.7?

Всего записей: 3 | Зарегистр. 22-02-2006 | Отправлено: 00:05 27-02-2006
enola

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vshersh
про то что разные версии это я читал.
теперь понятно почему я примеров не нашел, у меня просто нет этой папки Demos. А где-нибудь отдельно можно эти примерчики получить? Они на pascal или на Си?
спасибо.

Всего записей: 182 | Зарегистр. 22-04-2005 | Отправлено: 07:08 27-02-2006
AnGo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тем кто использует Берговские гриды.
У них можно сделать многострочный заголовок для столбцов?
 

Всего записей: 1078 | Зарегистр. 07-07-2002 | Отправлено: 08:50 27-02-2006
RUNaum



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, посоветуйте что-нить простенькое для поворота PNG-изображения. Может у кого есть наработки, может кто решал подобную проблему? надо максимально без наворотов (только не ImagEn =), лучше если будет freeware на базе того же PngImage.pas с sourceforge). Может даже не компонент, а просто посоветуете как это сделать?
 
з.ы. прозрачность имеет место, конечно же.
 

Цитата:
Тем кто использует Берговские гриды.
У них можно сделать многострочный заголовок для столбцов?  

 
я такого у них не нашел =( по крайней мере у NextGrid'а точно.

Всего записей: 306 | Зарегистр. 25-11-2005 | Отправлено: 10:45 27-02-2006 | Исправлено: RUNaum, 10:47 27-02-2006
AnGo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RUNaum

Цитата:
я такого у них не нашел =( по крайней мере у NextGrid'а точно.

Я тоже, поэтому и спрашиваю, может быть есть какой способ сделать это.
Вставить имидж с нужными словами - не предлагать!  

Всего записей: 1078 | Зарегистр. 07-07-2002 | Отправлено: 11:59 27-02-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по компонентам для Delphi, C++ Builder
ShIvADeSt (06-04-2006 01:56): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=6607


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru