Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2008, 08:24   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Одинаковые числа

Добрый день! Подскажите пожалуйста как сделать так, чтобы в заполненном стринг гриде цифрами, я мог выбрать два любых числа и если они одинаковые, то они удалялись бы в тот момент, когда я выбрал второе число. Как это можно сделать? Заранее Спасибо за помощь. Хочу написать одну программку и хочу начать с этого)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.11.2008, 09:39   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

1. Заводим переменные OldVal: string = ""; OldX, OldY: Integer;
2. На событии OnСlick StringGrid:
a. Если OldVal <> "" и OldVal = значению текущей ячейки, то очищаем её и ячейку с координатами (OldX, OldY).
б. Присваиваем OldVal значение текущей ячейки, OldX, OldY - координаты текущей ячейки.
3. goto 2
Arigato вне форума Ответить с цитированием
Старый 14.11.2008, 10:15   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Arigato, я попробовал записать то, что Вы написали вот так:
Код:
procedure TForm1.SG1Click(Sender: TObject);
var
 OldVal: string;
 OldX, OldY: integer;
begin
 OldVal:='';
 if (OldVal <> '') and (OldVal = SG1.Cells[OldX,OldY]) then
   begin
    OldVal:=SG1.Cells[OldX,OldY];
   end;
end;
но ничего не происходит(. По любому я что-то неправильно понял и записал. Подправьте пожалуйста там, где я ошибся). Цель: по нажатию на какие-то ячейки в таблице, удалять два числа, находящиеся в выбранных ячейках, если они равны друг другу. Или любые числа. Вот)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.11.2008, 14:51   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Переменные OldVal, OldX, OldY должны быть глобальными.
А дальше Вы все напутали очень сильно.
SG.Row - выбранная строка.
SG.Col - выбранная колонка.
Это и будут координаты текущей ячейки. Ещё раз перечитайте мой предыдущий пост.
Arigato вне форума Ответить с цитированием
Старый 14.11.2008, 18:51   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Arigato, че то мудрил мудрил, но так и не смекетел((. Помогите плиз. Подправьте пжлста код, который я написал выше. Очешь надо. Не получается у меня. Не могу понять в вашем посте №2 пункт №2((.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.11.2008, 18:52   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Arigato, че то мудрил мудрил я, но так и не смекетел((. Помогите плиз. Подправьте пжлста код, который я написал выше. Очешь надо. Не получается у меня. Не могу понять в вашем посте №2 пункт №2((.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.11.2008, 19:26   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот так попробуйте:
Код:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
if OldValue<' ' then //меньше пробела
OldVal:=StringGrid1.Cells[ACol,ARow] else
if OldVal=StringGrid1.Cells[ACol,ARow] then
StringGrid1.Cells[ACol,ARow]:='';
end;
mihali4 вне форума Ответить с цитированием
Старый 14.11.2008, 20:00   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

mihali4
По задачи ТС надо очистить 2 ячейки, т.е., во-первых, надо запомнить координаты прошлой ячейки, а во-вторых, присвоить OldVal := '' после очистки ячеек.
Arigato вне форума Ответить с цитированием
Старый 14.11.2008, 20:05   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Это тоже мне добавить? Или дадим топикстартеру возможность "раскинуть мозгами"?
mihali4 вне форума Ответить с цитированием
Старый 14.11.2008, 20:34   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Я ему эту возможность с самого начала даю, но он
Цитата:
Arigato, че то мудрил мудрил я, но так и не смекетел((
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одинаковые ветки в DBTreeView Andreych74 БД в Delphi 4 19.08.2008 15:38
Одинаковые элементы kodov Общие вопросы Delphi 3 11.08.2008 14:03
Одинаковые строки Македонский Общие вопросы Delphi 3 05.10.2007 14:40
Убрать одинаковые значения D-mon БД в Delphi 1 23.08.2007 10:55
Как просуммировать одинаковые наименования? Алька Microsoft Office Excel 1 23.05.2007 22:02