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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2010, 18:53   #1
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию Переключатель(delphi)

Всю голову сломал, но так и не могу найти в чем проблема...
Код:
procedure TForm5.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i: integer;
begin
  i:=0;
  if i=0 then
    begin
      i:=1;
      edit1.Text:=inttostr(x);
      edit2.Text:=inttostr(y);
    end
  else
    begin
      i:=0;
      edit3.Text:=inttostr(x);
      edit4.Text:=inttostr(y);
    end;
end;
мне нужно сделать чтобы по клику мышки на форме поочереди заполнялись edit1, edit2 и edit3, edit4 иксами и игреками соответственно.
то есть клик -> запись х и у в edit1 и edit2 -> клик -> запись х и у в edit3 и edit4 -> клик -> запись х и у в edit1 и edit2 -> и так дальше. но почему то мой метод не работает подскажите пожалуйста
Brabus вне форума Ответить с цитированием
Старый 09.03.2010, 19:10   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
var i: integer;
это локальная переменная, она каждый вызов функции по новой специализируется нулем.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2010, 19:18   #3
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию

Пепел Феникса, а как это можно исправить. Голова уже совсем не варит
Brabus вне форума Ответить с цитированием
Старый 09.03.2010, 20:09   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

объявите глобально её.
или вообще проверяйте где сейчас фокус ввода и просто передавайте дальше.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2010, 20:18   #5
Iceman
Форумчанин
 
Регистрация: 08.07.2007
Сообщений: 154
По умолчанию

i:=0;
if i=0 then
...
Ты пишеш что и равно 0 и сразу же проверяеш ровно ли и нулю, 100% положительный результат.
i:=0; надо стереть и написать в событии создания формы. (двойной щелчёк по форме)
Iceman вне форума Ответить с цитированием
Старый 09.03.2010, 20:24   #6
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию

Iceman, так было специально задумано
Brabus вне форума Ответить с цитированием
Старый 09.03.2010, 20:27   #7
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию

всё равно неправильно работает
Brabus вне форума Ответить с цитированием
Старый 09.03.2010, 20:35   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

локальная переменная каждый раз по новой создается.(в стеке если точно)
обьявите глобальную с инициализацией нулем.
а потом лишь проверяйте её.
и присмотритесь к моему второму варианту
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2010, 20:40   #9
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию

а можно про второй вариант немного поподробнее
Brabus вне форума Ответить с цитированием
Старый 09.03.2010, 20:51   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
procedure TForm1.Edit3Click(Sender: TObject);
begin
 if Edit1.Focused then Edit2.SetFocus;
 if Edit2.Focused then Edit3.SetFocus;
 if Edit3.Focused then Edit1.SetFocus;
end;
чтото вроде такого
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Переключатель листов Alex___ Microsoft Office Excel 6 28.09.2009 13:51
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27