Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с массивом, проверьте пожалуйста где ошибка 
:(
    Опции темы
darkida
Дата 3.2.2010, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Вот он код. 

Код

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
  i: integer;
begin
x0:=Mouse.CursorPos.X-form1.left-4;
y0:=Mouse.CursorPos.Y-form1.top-30;
label3.Caption:='x='+inttostr(x0)+'  '+'y='+inttostr(y0);
for i:=1 to 4 do
if (x0> xx[i]) and (x0<(xx[i]+30)) and (y0>yy[i]) and (y0<(yy[i]+20)) then begin
memo1.Lines[0]:=inttostr(i);
button4.Visible:=true;
button5.Visible:=true;
end else begin
memo1.Lines[0]:=' ';
button4.Visible:=false;
button5.Visible:=false;
end;
end;


Как видно из кода, что при клике на какой-то объект должно проходить событие. Но почему откликается только на последний элемент массива. Тоесть если сделать for 1 to 3, то будет откликаться только 3. если 4 то только 4-ый. В чем проблема? В том что массив указан глобально, а не динамически? Но мне нужно чтоб он был вначале.
Помогите пожалуйста. 
PM MAIL   Вверх
kami
Дата 3.2.2010, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(darkida @  3.2.2010,  06:39 Найти цитируемый пост)
Как видно из кода, что при клике на какой-то объект должно проходить событие.

Нет, из кода этого не видно. Для того, чтобы сказать это со 100% уверенностью, нужно видеть dfm и объявление класса формы.
Цитата(darkida @  3.2.2010,  06:39 Найти цитируемый пост)
Но почему откликается только на последний элемент массива. Тоесть если сделать for 1 to 3, то будет откликаться только 3. если 4 то только 4-ый. В чем проблема?

Что значит "откликается на элемент массива"? Это как?
Проявляя недюжинный потенциал телепатии, и совершенно не понимая кода  smile , скажу, что проблема здесь:
Цитата(darkida @  3.2.2010,  06:39 Найти цитируемый пост)
memo1.Lines[0]:

И проблема именно в [0].
PM MAIL WWW   Вверх
darkida
Дата 3.2.2010, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Цитата

Проявляя недюжинный потенциал телепатии, и совершенно не понимая кода  smile , скажу, что проблема здесь:  memo1.Lines[0]:

Уважаемый kami , на этот раз ваш потенциал телепатии оказался не верным.  smile . Я проверил, это не влияет. 
Цитата

Что значит "откликается на элемент массива"? Это как?

Ой не  массива, а цикла. Извиняюсь.




Это сообщение отредактировал(а) darkida - 3.2.2010, 10:48
PM MAIL   Вверх
darkida
Дата 3.2.2010, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 59
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



ооо нашел ошибку. 

я else не правильно писал вот здесь
Код

for i:=1 to 4 do   begin
if (x0> xx[i]) and (x0<(xx[i]+30)) and (y0>yy[i]) and (y0<(yy[i]+20)) then begin
memo1.Lines[0]:=inttostr(i);
button2.Visible:=true;
button3.Visible:=true;
end else begin
memo1.Lines[0]:=' ';
stavka:=0;
button2.Visible:=false;
button3.Visible:=false;
end;
end;

если else убрать то все работает. 
Хотя так и не понял почему.

Объясните как правильно прописать здесь else. 

Это сообщение отредактировал(а) darkida - 3.2.2010, 11:27
PM MAIL   Вверх
shmelina
Дата 6.2.2010, 23:09 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.6.2009

Репутация: нет
Всего: нет



Как же тяжело смотреть на неотформатированный код. Вы бы хоть нас пожалели, если вам себя не жалко.
PM MAIL   Вверх
xfoby
Дата 9.2.2010, 01:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 21.2.2009
Где: Анапа

Репутация: нет
Всего: нет



shmelina,
Код

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  i: integer;
begin
  x0 := Mouse.CursorPos.X - Form1.Left - 4;
  y0 := Mouse.CursorPos.Y - Form1.Top - 30;
  Label3.Caption := 'x=' + IntToStr(x0) + '  ' + 'y=' + IntToStr(y0);
  for i := 1 to 4 do
    if (x0 > xx[i]) and (x0 < (xx[i] + 30)) and (y0 > yy[i]) and (y0 < (yy[i] + 20)) then
    begin
      Memo1.Lines[0] := IntToStr(i);
      Button4.Visible := true;
      Button5.Visible := true;
    end
    else
    begin
      Memo1.Lines[0] := ' ';
      Button4.Visible := false;
      Button5.Visible := false;
    end;
end;


У тебя "откликаются" все итерации цикла, просто этого не видно (что судя по всему и имел ввиду kami), так как в каждой итерации нулевая строка перезаписывается и значения видимости кнопок меняются. Поставь вместо 
Код

Memo1.Lines[0] := IntToStr(i);
...
Memo1.Lines[0] := ' ';

хотя бы
Код

Memo1.Lines.Add(IntToStr(i));
...
Memo1.Lines.Add(' ');

И увидишь, что всё "откликается" smile


Немного ещё:
Код

x0:=Mouse.CursorPos.X-form1.left-4;
y0:=Mouse.CursorPos.Y-form1.top-30;

такие вещи непростительны, ибо в разных визуальных стилях ширина бордеров и высота заголовка разные. К тому же у тебя в параметрах процедуры координаты даны.

Это сообщение отредактировал(а) xfoby - 9.2.2010, 02:02
PM MAIL WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0904 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.