Главная страница
    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.035 c
14-1104406889
Карелин Артем
2004-12-30 14:41
2005.01.16
Отсылка сидюков с программой в другие регионы. Как лучше?


14-1103032206
Vlad Oshin
2004-12-14 16:50
2005.01.16
Вероятность. Задача с ответом Объясните мне как такое возможно.


9-1096915359
Nightfire
2004-10-04 22:42
2005.01.16
Помогите с delphix


14-1104090808
GanibalLector
2004-12-26 22:53
2005.01.16
ТОСТ


14-1103580715
Homa_Programer
2004-12-21 01:11
2005.01.16
COCOMO





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