Главная страница
    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.46 MB
Время: 0.04 c
1-1103755615
Project1
2004-12-23 01:46
2005.01.16
Задачка. Какой код правильнее и почему ?


14-1103795622
ISP
2004-12-23 12:53
2005.01.16
Весело у вас там в России...


3-1102664346
abell
2004-12-10 10:39
2005.01.16
Как записать кртинку из bmp-файла в таблицу Access?


1-1104836002
Andrewp
2005-01-04 13:53
2005.01.16
Загрузка файлов.


9-1096187857
Cash
2004-09-26 12:37
2005.01.16
DelphiX on Delphi6





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский