| 
| 
 | Вопрос # 6 375/ вопрос решён / | 
 |  Приветствую, уважаемые эксперты!Программа должна перетаскивать из одного компонента в другой. Моя программа переносит значение из TLabel в TProgressBar, из TProgressBar в TLabel. Но при переносе из TMemo в TProgressBar выдает ошибку: "is not a valid integer value". Пожалуйста помогите в чем ошибка, где ее исправить. Программа имеется в приложении.
 Спасибо!
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) Приложение:Переключить в обычный режим unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ComCtrls; type  TForm1 = class(TForm)    Label1: TLabel;    ProgressBar1: TProgressBar;    Memo1: TMemo;    procedure Label1DragDrop(Sender, Source: TObject; X, Y: Integer);    procedure Label1DragOver(Sender, Source: TObject; X, Y: Integer;      State: TDragState; var Accept: Boolean);  private    { Private declarations }  public    { Public declarations }  end; var  Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Label1DragDrop(Sender, Source: TObject; X, Y: Integer);beginif(source is TLabel)and(sender is TProgressBar) then (sender as
TProgressBar).Position:=strtoint((source as TLabel).caption);if(source is TLabel)and(sender is TMemo) then (sender as TMemo).lines.Add((source as
TLabel).caption);if(source is TProgressBar)and(sender is TLabel) then (sender as TLabel).caption:=inttostr((source as
TProgressBar).position);if(source is TProgressBar)and(sender is TMemo) then (sender as TMemo).lines.Add(inttostr((source as
TProgressBar).position));if(source is TMemo)and(sender is TProgressBar) then (sender as
TProgressBar).Position:=strtoint((source as TMemo).Text);if(source is TMemo)and(sender is TLabel) then (sender as TLabel).caption:=(source as TMemo).Text;end; procedure TForm1.Label1DragOver(Sender, Source: TObject; X, Y: Integer;  State: TDragState; var Accept: Boolean);beginaccept:=true;end;end.
|  |   Вопрос задала: 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™ (статус: Доктор наук), 18 февраля 2013, 08:10 [#2]:А ещё может быть, что из мемо передаётся текст с форматированием (знак переноса строки в конце). Попробуй функцию Trim(), вдруг поможет. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  19 февраля 2013, 16:53: Статус вопроса изменён на решённый (изменил автор вопроса — Ewgenia): Вопрос решен! 
|   | eclipse (статус: Посетитель), 3 марта 2013, 08:19 [#3]:Вы, Ewgenia, должны понимать что среди этих данных, в разных компонентах, только в ProgressBar принимаются значения типа Int, в остальных строковые данные, поэтому чтобы из стороки в целое число перевести данные следует использовать StrToInt или наоборот IntToStr. Так же если в строке Memo есть пробелы и др. буквы и знаки их следует обрезать (напр. функцией Copy), чтобы нужные Вам данные можно было перевести в Int. 
 Из того что написал Шичко Игорь следует что нужно сделать:
 1. перебор по строкам: for i:=0 to ...
 2. найти нужную строку и отредактировав её присвоить нужному компоненту.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |