Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кнопка в TStringGrid [D6, Win95/98]


MsGuns ©   (2003-01-09 12:23:00) 

Добрый день и удачи Мастерам !
Простой вопрос, но не получается. Надо программно в зависимости от режима (только при разрешенном редактировании, которым я сам и управляю) в случае, если активна определенная колонка грида (допустим, 2-я или 3-я), рисовать в правой части только активной ячейки кнопку "Справочник" (кнопка есть). Помогите, пожалуйста, в факах только примеры с раскраской и картинками.


reonid   (2003-01-09 15:00:00) [1]

Посмотри здесь - может, пригодится.
http://delphi.mastak.ru/cgi-bin/download.pl?get=1036924792&n=0

Правда, кнопки там без глифов, но нарисовать глиф вещь тривиальная:
ImgList.Draw(Canvas, Rect.Left+2, Rect.Top+2, ImgIndex)


MBo   (2003-01-09 13:47:00) [2]

imagelist1.getbitmap(0,BitBtn1.Glyph);


MsGuns   (2003-01-09 13:33:00) [3]

Блин, совсем затрахался с этими кнопками,- в SpeedButton тоже только глиф. Буду геморройничать с извлечением глифа из списка и использовать BitBtn.


MsGuns   (2003-01-09 13:30:00) [4]

>REA © (09.01.03 12:56)
DBGrid не получится, т.к. в гриде надо редактировать записи автономно от НД, а потом запросом старые записи в таблице заменять новыми (речь идет о проводках по документу). При этом сама таблица проводок может быть открыта через другой датасет и совершенно по другим условиям выборки.

>MBo © (09.01.03 13:00)
Спасибо большое. Но это все же не TSpeedButton. (Дело в том, что в зависимости от контекста, рисунок на кнопке выбирается из списка имиджев, а BitBtn требует глиф. Определение же глифа через список требует также некоторых геморроев в коде). Буду пробовать.


MBo   (2003-01-09 13:00:00) [5]

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if ACol=2 then begin
BitBtn1.Left:=StringGrid1.Left+StringGrid1.CellRect(ACol,ARow).Right-30;
BitBtn1.Top:=StringGrid1.Top+StringGrid1.CellRect(ACol,ARow).Top+3;
end;
end;


REA   (2003-01-09 12:56:00) [6]

В DBGrid есть элипсис (...). Можно посмотреть как сделано там. Или вообще использовать DBGrid.


MsGuns   (2003-01-09 12:53:00) [7]

>MBo © (09.01.03 12:46)
TButton не катит. А вот с TBitBtn попробую

Но все же..
Если создать кнопку программно, а потом просто нарисовать ее по заданным координатам. Знаю, что можно, но вот неполучается..;(((
Если можно, код, пожалуйста. Что-то типа Canvas....


MBo   (2003-01-09 12:46:00) [8]

>MsGuns
Сделай кнопке bringtofront (если она Tbutton или Tbitbtn, а вот c TSpeedBtn так не получится). В принципе, достаточно положить кнопку на форму ПОСЛЕ StringGrid


MsGuns   (2003-01-09 12:42:00) [9]

>Song © (09.01.03 12:30)

В том то и дело, что не рисуется ! Вернее, рисуется, но почему-то ЗА стринггридом. Использую именно Top и Left кнопки !


Song   (2003-01-09 12:30:00) [10]

Ну дык в TStringGrid.onDrawCell сравнивай ACol/ARow с той ячейкой что тебе нужно и рисуй там кнопку, устанавливая TButton.Left/Top


Наверх

Титульная страница Поиск, карта сайта Написать письмо