Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

PopUpMenu в StringGrid   Найти похожие ветки 

 
SbtON   (2004-12-23 12:01) [0]

Подскажите, люди доюрые.
Есть StringGrid, нужно к нему привязать PopUp меню, но(!!!) чтобы скажем первый столбец каждой строки передавалася в виде параметра в меню и выполнялись функции однотипные, но с разным результатом.
То есть готов StringGrid и PopupMenu, наводим мышу на строку, кликаем правую кнопку и открывается меню, для всех одинаковое, но благодаря параметру результат разный.


 
SbtON   (2004-12-23 15:42) [1]

Ну что же Вы? :( Подкиньте идейку, кроме той, что книжки читать надо.. :)


 
begin...end ©   (2004-12-23 16:03) [2]

> SbtON   (23.12.04 12:01)

Вопрос не очень понятно сформулирован. Вам надо при показе PopupMenu узнавать, на какой колонке кликнули?

Тогда, возможно, так:

procedure TMyForm.MyStringGridContextPopup(Sender: TObject; MousePos: Point; var Handled: Boolean);
var
 Col, Row: Integer;
begin
 (Sender as TStringGrid).MouseToCell(MousePos.X, MousePos.Y, Col, Row);
 // Теперь в Col содержится номер столбца
end.


Правда, этот обработчик будет вызываться и в том случае, если PopupMenu будет вызвано не мышью, а с клавиатуры. Тогда, может быть, лучше не назначать PopupMenu StringGrid"у, а по событию OnMouseDown показывать его самостоятельно (TPopupMenu.Popup)? Координаты мыши передаются в OnMouseDown как параметры, их можно преобразовать в номер столбца/ряда с помощью TStringGrid.MouseToCell.


 
ssk ©   (2004-12-23 16:06) [3]

1. присваиваешь ПопапМеню СтрингГриду

2. потом вот это

var
 ACol, ARow: integer;

implementation

{$R *.dfm}

// пункт PopupMenu называется "Calc"
procedure TForm1.Calc1Click(Sender: TObject);
begin
 ShowMessage(StringGrid1.Cells[ACol, ARow]);
end;

// здесь вычисляем ячейку
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 StringGrid1.MouseToCell(X, Y, ACol, ARow);
end;


 
SbtON   (2004-12-24 13:05) [4]

Благодарю за ответы!
Сейчас я уточню вопрос..
В существующем StrinGrid кликаю в любой колонке на любой строке, но при этом для выполнения функции в ПопапМеню нужно получить содержимое первой ячейки - это и будет входным параметром для выполнения функции. Если не трудно, подскажите, пожалуйста..


 
asafr ©   (2004-12-24 17:33) [5]

private
  ACol: integer;
..................
..................
//Определяешь колонку (ACol)
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 var
 ARow:integer;
begin
StringGrid1.MouseToCell(X, Y, ACol, ARoe);
end;

//А это то, что требуется:
procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
NewItem:TMenuItem;
begin
PopupMenu1.Items.Clear;
NewItem:=TMenuItem.Create(PopupMenu1);
PopupMenu1.Items.Add(NewItem);
NewItem.Caption :=StringGrid1.Cells[ACol,0];
NewItem.OnClick = PopupItemsClick; //Это процедура обработки клика.
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.038 c
3-1103125117
sashok
2004-12-15 18:38
2005.01.16
Помогите с фильтрацией в DBGrid


9-1095878094
Sam Stone
2004-09-22 22:34
2005.01.16
Морской бой


1-1104323219
Jay1982
2004-12-29 15:26
2005.01.16
ICON->BMP


4-1101492834
VDevel
2004-11-26 21:13
2005.01.16
Адрес DNS


14-1104311035
Егор
2004-12-29 12:03
2005.01.16
Настолные игры для локальки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский