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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2012, 21:08   #1
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию Не компилируется (перебор по Edit)

Код:
 procedure EditKeyPress(Sender: TObject; var Key: Char);
...
Код:
for i:= 1 to 24 do
     begin
      (FindComponent('Edit' + IntToStr(i)) as TEdit).OnKeyPress:= EditKeyPress;
     end;
Unsatisfied forward or external declaration: 'TForm1.EditKeyPress'
Не могу понять что не так делаю?
kta87 вне форума Ответить с цитированием
Старый 01.02.2012, 21:35   #2
KoliyR
Пользователь
 
Регистрация: 01.09.2009
Сообщений: 55
По умолчанию

это у тебя 24 Едита??
EditKeyPress(Sender)

честно не совсем понимаю зачем это
Обучение, задания по Делфи http://KoliyR.tk
KoliyR вне форума Ответить с цитированием
Старый 01.02.2012, 21:41   #3
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

ну вообще то как я понел вы пытаетесь присвоить edit'am процедуру EditKeyPress но вы не учли что он присваиваться при создании , сейчас вы вызываете процедуру OnKeyPress и равняете ее с EditKeyPress вот почему эта ошибка
Кольша вне форума Ответить с цитированием
Старый 01.02.2012, 21:51   #4
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А есть такой обработчик событий в форме TForm1.EditKeyPress ? У формы!!!
ReportCube вне форума Ответить с цитированием
Старый 01.02.2012, 21:56   #5
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

ну так то там в самом верху показано что процедура такая есть
Кольша вне форума Ответить с цитированием
Старый 01.02.2012, 22:01   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

процедура или метод?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.02.2012, 22:09   #7
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Я если честно не понимаю, раньше все работало... В новой версии этой софтины понадобилось несколько апгредить функционал, код писал заново и вот теперь перебор не работает. Кстати ошибка то и появляется при объявлении процедуры, хотя все делал по аналогии с предыдущей версии.
П.С. 24 едита нужны...ну ни чего взамен не придумаешь, находятся в разных местах формы имеют разные размеры, что то типа StringGrid и т.п. не приемлемо просто!
А возможно есть более простой способ перебирать по нажатию клавиш эти едиты?
kta87 вне форума Ответить с цитированием
Старый 01.02.2012, 22:13   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
kta87
Показывай весь модуль. Уверен что этот обработчик у тебя неправильно обьявлен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2012, 22:16   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
процедура или метод?
Наврядли ТС разницу улавливает.
Цитата:
ну так то там в самом верху показано что процедура такая есть
Что-то не заметно TForm1. вверху. И объявление метода должно быть в классе TForm1 примерно так
Код:
...
type
  TForm1 = class(TForm)
    ...
    procedure EditKeyPress(Sender: TObject; var Key: Char);
  private
    ...
  public
    ...
  end;
...
implementation

procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
  ...
end;
...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 01.02.2012 в 22:24.
Аватар вне форума Ответить с цитированием
Старый 01.02.2012, 22:26   #10
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Код:
procedure LoadComboBoxItems;
    procedure FormCreate(Sender: TObject);
    procedure EditKeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a: array of Real; 
  b: array of Integer; 

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.LoadComboBoxItems;
begin
 ComboBox1.Items.LoadFromFile('lib\TipTs1.ini');
 ComboBox1.ItemIndex := 0;
 ComboBox2.Items.LoadFromFile('lib\TipTs2.ini');
 ComboBox2.ItemIndex:= 8;
 ComboBox3.Items.LoadFromFile('lib\TipTs3.ini');
 ComboBox3.ItemIndex:= 8;
end;

procedure TForm1.FormCreate(Sender: TObject);
 var
   i: Integer;
begin

 LoadComboBoxItems;
 With StringGrid1 do
  begin
    Cells[0,0]:= 'Время';
    Cells[1,0]:= 'Yc';
    Cells[2,0]:= 'Qc';
    for i:= 1 to 24 do
     begin
      (FindComponent('Edit'+IntToStr(i)) as TEdit).OnKeyPress := EditKeyPress;
      Cells[0,i]:= IntToStr(i); 
     end;
  end;
end;
Ниже рабочий вариант:
Код:
procedure LoadComboBoxItems;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure EditKeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
  

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a:array of Real; 
  a1:array of Real;
  b:array of Real; 
  c:array of Real; 

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.LoadComboBoxItems;
begin
 ComboBox1.Items.LoadFromFile('librarys\CBox1.ini');
 ComboBox1.ItemIndex := 0;
 ComboBox2.Items.LoadFromFile('librarys\CBox2.ini');
 ComboBox2.ItemIndex:= 8;
 ComboBox3.Items.LoadFromFile('librarys\CBox3.ini');
 ComboBox3.ItemIndex:= 8;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
begin
  for i:=1 to 24 do
(FindComponent('Edit'+IntToStr(i)) as TEdit).OnKeyPress := EditKeyPress;
 LoadComboBoxItems;
 with StringGrid1 do begin
   Cells[0,0] := '№';
   Cells[1,0] := 'Наименование остановочного пункта';
   Cells[2,0] := 'Расстояние';
 end;
end;
Все разобрался ... всем спасибо проблема была тут
Код:
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
var
  Num: integer;
begin
 case Key of
  #8:;
  #44:;
  #46: Key := #44;
 '0'..'9':;
  #13:begin
       Num := StrToInt(Copy((Sender as TEdit).Name, Length('Edit')+1, Length((Sender as TEdit).Name)));
       if Num <> 24 then
        (FindComponent('Edit'+IntToStr(Num+1)) as TEdit).SetFocus
       else
        Button1.SetFocus;
      end;
  else Key := #0; end;
end;

Последний раз редактировалось kta87; 01.02.2012 в 22:34.
kta87 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование строки из Edit в другой Edit. Ibanez Wizard Win Api 3 29.03.2011 02:46
не компилируется Roman87 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 09.12.2010 17:30
не компилируется angedonia Общие вопросы C/C++ 4 07.06.2010 10:01
Не компилируется Alchi09 Общие вопросы C/C++ 10 03.12.2009 15:20