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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 6 375

/ вопрос решён /

Приветствую, уважаемые эксперты!
Программа должна перетаскивать из одного компонента в другой. Моя программа переносит значение из TLabel в TProgressBar, из TProgressBar в TLabel. Но при переносе из TMemo в TProgressBar выдает ошибку: "is not a valid integer value". Пожалуйста помогите в чем ошибка, где ее исправить. Программа имеется в приложении.
Спасибо!

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, ComCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Label1: TLabel;
  12. ProgressBar1: TProgressBar;
  13. Memo1: TMemo;
  14. procedure Label1DragDrop(Sender, Source: TObject; X, Y: Integer);
  15. procedure Label1DragOver(Sender, Source: TObject; X, Y: Integer;
  16. State: TDragState; var Accept: Boolean);
  17. private
  18. { Private declarations }
  19. public
  20. { Public declarations }
  21. end;
  22.  
  23. var
  24. Form1: TForm1;
  25.  
  26. implementation
  27.  
  28. {$R *.dfm}
  29.  
  30. procedure TForm1.Label1DragDrop(Sender, Source: TObject; X, Y: Integer);
  31. begin
  32. if(source is TLabel)and(sender is TProgressBar) then (sender as TProgressBar).Position:=strtoint((source as TLabel).caption);
  33. if(source is TLabel)and(sender is TMemo) then (sender as TMemo).lines.Add((source as TLabel).caption);
  34. if(source is TProgressBar)and(sender is TLabel) then (sender as TLabel).caption:=inttostr((source as TProgressBar).position);
  35. if(source is TProgressBar)and(sender is TMemo) then (sender as TMemo).lines.Add(inttostr((source as TProgressBar).position));
  36. if(source is TMemo)and(sender is TProgressBar) then (sender as TProgressBar).Position:=strtoint((source as TMemo).Text);
  37. if(source is TMemo)and(sender is TLabel) then (sender as TLabel).caption:=(source as TMemo).Text;
  38. end;
  39.  
  40. procedure TForm1.Label1DragOver(Sender, Source: TObject; X, Y: Integer;
  41. State: TDragState; var Accept: Boolean);
  42. begin
  43. accept:=true;
  44. end;
  45. end.


Ewgenia Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задала: Ewgenia (статус: Посетитель)
Вопрос отправлен: 17 февраля 2013, 11:12
Состояние вопроса: решён, ответов: 0.


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

Всего сообщений: 3; последнее сообщение — 3 марта 2013, 08:19; участников в обсуждении: 3.
Шичко Игорь

Шичко Игорь (статус: 9-ый класс), 17 февраля 2013, 12:11 [#1]:

Компонент TMemo - многострочный редактор и, поэтому, свойство Text содержит весь массив строк.
Перенести можно только какую-либо строку TMemo:
...
if(source is TMemo)and(sender is TProgressBar) then (sender as TProgressBar).Position:=strtoint((source as TMemo).Lines.Strings[0]); // первая строка
...
min@y™

min@y™ (статус: Доктор наук), 18 февраля 2013, 08:10 [#2]:

А ещё может быть, что из мемо передаётся текст с форматированием (знак переноса строки в конце). Попробуй функцию Trim(), вдруг поможет.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

19 февраля 2013, 16:53: Статус вопроса изменён на решённый (изменил автор вопроса — Ewgenia): Вопрос решен!

eclipse

eclipse (статус: Посетитель), 3 марта 2013, 08:19 [#3]:

Вы, Ewgenia, должны понимать что среди этих данных, в разных компонентах, только в ProgressBar принимаются значения типа Int, в остальных строковые данные, поэтому чтобы из стороки в целое число перевести данные следует использовать StrToInt или наоборот IntToStr. Так же если в строке Memo есть пробелы и др. буквы и знаки их следует обрезать (напр. функцией Copy), чтобы нужные Вам данные можно было перевести в Int.

Из того что написал Шичко Игорь следует что нужно сделать:
1. перебор по строкам: for i:=0 to ...
2. найти нужную строку и отредактировав её присвоить нужному компоненту.

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

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