Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 260

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Подскажите, как реализовать следующее.
На фрорме имеются 2 Edit и StringGid.
Задача состоит в том, что надо ввести данные из Edit1 и Edit2 в StringGrig, затем изменить данные в Edit1 и Edit2 и ввести измененные данные в следующую строку StringGrig.
Пытаюсь сделать это с помощью нижеприведенного кода, но данные вводятся только в первую строку StringGrig, заменяя предудущие данные.
Заранее благодарен.
Al_Sha

Приложение:
  1. unit Unit1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, Grids, StdCtrls;
  6. type
  7. TForm1 = class(TForm)
  8. Edit1: TEdit;
  9. Edit2: TEdit;
  10. Button1: TButton;
  11. StringGrid1: TStringGrid;
  12. procedure Button1Click(Sender: TObject);
  13. private
  14. { Private declarations }
  15. public
  16. { Public declarations }
  17. end;
  18. var
  19. Form1: TForm1;
  20. implementation
  21. {$R *.dfm}
  22. procedure TForm1.Button1Click(Sender: TObject);
  23. var
  24. str: integer;
  25. begin
  26. if (Edit1.Text='') or (Edit2.Text='') then
  27. begin
  28.  
  29. end
  30. else
  31.  
  32. begin
  33. str:=0;
  34. StringGrid1.Cells[0,str]:=Edit1.Text;
  35. StringGrid1.Cells[1,str]:=Edit2.Text;
  36. str:=str+1;
  37. StringGrid1.RowCount:=StringGrid1.RowCount+1;
  38. StringGrid1.Col:=0;
  39. StringGrid1.SetFocus;
  40. end;
  41. Edit1.Clear;
  42. Edit2.Clear;
  43.  
  44. end;
  45.  
  46. end.
  47.  


Al_Sha Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Al_Sha (статус: Посетитель)
Вопрос отправлен: 5 мая 2011, 22:01
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Цитата (Al_Sha):

И все же, как подправить код?????

Ну, вот как-то так:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Edit1.Text='') or (Edit2.Text='')
    then showmessage('Данные не введены...')
    else with StringGrid1 do
           begin
             RowCount:= RowCount + 1;
             Cells[0, RowCount - 1]:= Edit1.Text;
             Cells[1, RowCount - 1]:= Edit2.Text;
             Col:=0;
             if CanFocus
               then SetFocus();
 
             Edit1.Clear();
             Edit2.Clear();
           end;
end;

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 5 мая 2011, 22:38
Оценка за ответ: 5

Комментарий к оценке: Спасибо большое, все работает.
Однако при вводе данных в StringGrid появляется пустая первая строка...

Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 6 мая 2011, 21:42; участников в обсуждении: 4.
min@y™

min@y™ (статус: Доктор наук), 5 мая 2011, 22:04 [#1]:

Код так и должен работать. Переменная str локальная, она равна нулю при каждом проходе процедуры.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 5 мая 2011, 22:06 [#2]:

Наверняка, компилятор ещё и хинт выкидывает, типа "...assigned... but never used".
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Al_Sha

Al_Sha (статус: Посетитель), 5 мая 2011, 22:12 [#3]:

Да нет, компилятор ничего не выдает...
И все же, как подправить код?????
bugmenot

bugmenot (статус: 3-ий класс), 5 мая 2011, 22:47 [#4]:

Цитата (Al_Sha):

Да нет, компилятор ничего не выдает...

Неправда
[DCC Hint] Unit12.pas(43): H2077 Value assigned to 'str' never used
виконання програми розпочинається з того самого мiсця, де призупинилося.

5 мая 2011, 23:52: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

Al_Sha

Al_Sha (статус: Посетитель), 6 мая 2011, 07:23 [#5]:

Нет правда.
Такой строки
>[DCC Hint] Unit12.pas(43): H2077 Value assigned to 'str' >never used
у меня компилятор не выдает.
Использую Turbo Delphi Lite
min@y™

min@y™ (статус: Доктор наук), 6 мая 2011, 08:14 [#6]:

Цитата (min@y™):

Однако при вводе данных в StringGrid появляется пустая первая строка...

Ну сделай FixedRows = 1.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 6 мая 2011, 10:31 [#7]:

Цитата (Al_Sha):

Нет правда.
Такой строки
>[DCC Hint] Unit12.pas(43): H2077 Value assigned to 'str' >never used
у меня компилятор не выдает.
Использую Turbo Delphi Lite

Это от компилятора мало зависит. Это зависит от настроек.
Но замечания компилятора уместны. значение переменной действительно не используется.
Галочка "подтверждения прочтения" - вселенское зло.
bugmenot

bugmenot (статус: 3-ий класс), 6 мая 2011, 21:42 [#8]:

Цитата (Вадим К):

Это от компилятора мало зависит. Это зависит от настроек.

Цитата (Al_Sha):

Turbo Delphi Lite

Если моя таблица не врёт, то в Turbo компилятор версии 18.0, а замечания появились в 12.0 (кто точно знает - прошу подтвердить или опровергнуть).

Цитата (Вадим К):

замечания компилятора уместны

даже больше скажу: их должно внимательно читать и ни при каких обстоятельствах не отключать.

Рекомендую сбросить настройки к заводским умолчаниям.
виконання програми розпочинається з того самого мiсця, де призупинилося.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:37
Выполнено за 0.02 сек.