0 / 0 / 1
Регистрация: 31.05.2013
Сообщений: 28
1

Получить содержание второй строки из TMemo

14.12.2013, 16:15. Показов 2321. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть код на Dilphi7
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, Buttons, Menus;
 
type
  TForm1 = class(TForm)
    Panel2: TPanel;
    Panel1: TPanel;
    Tree: TTreeView;
    shrift1: TFontDialog;
    loadtree: TOpenDialog;
    Download: TButton;
    Color1: TButton;
    New: TButton;
    Deleted: TButton;
    working: TMemo;
    Splitter1: TSplitter;
    bar: TStatusBar;
    REname: TBitBtn;
    menutree: TPopupMenu;
    menuworking: TPopupMenu;
    Downloar1: TMenuItem;
    New1: TMenuItem;
    delete1: TMenuItem;
    Rename1: TMenuItem;
    Shrift2: TMenuItem;
    N1: TMenuItem;
    color: TColorDialog;
    Save: TButton;
    SaveDialog1: TSaveDialog;
    widthForm: TButton;
    procedure DownloadClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DeletedClick(Sender: TObject);
    procedure NewClick(Sender: TObject);
    procedure TreeClick(Sender: TObject);
    procedure Color1Click(Sender: TObject);
    procedure Panel1Resize(Sender: TObject);
    procedure REnameClick(Sender: TObject);
    procedure Downloar1Click(Sender: TObject);
    procedure New1Click(Sender: TObject);
    procedure delete1Click(Sender: TObject);
    procedure Rename1Click(Sender: TObject);
    procedure Shrift2Click(Sender: TObject);
    procedure SaveClick(Sender: TObject);
    procedure widthFormClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.DownloadClick(Sender: TObject);
 
begin
  {if shrift.Execute then
  working.Font.Assign(shrift.Font);}
   if loadtree.Execute then
 
   Tree.loadfromfile( loadtree.Filename);
   tree.FullExpand;
  // tree.PopupMenu:= menutree;
end;
 
procedure TForm1.FormShow(Sender: TObject);
var //Time:Tdatetime;
D: double;
begin
Tree.items.clear;
  bar.Panels[0].Width:=150;
  //bar.panels[0].Text:='Время  '   + timetostr(date);
  bar.Panels[1].Text:='размеры панели   ' +inttostr(Panel1.width)+' : ' + inttostr(Panel1.height) ;
 
    D:=now();
    D:=D-366;
    bar.panels[0].Text:=FormatDatetime('yyyy',D);
end;
 
 
procedure TForm1.DeletedClick(Sender: TObject);
begin
 //tree.PopupMenu:= nil;
tree.Items.Clear;
working.Lines.Clear;
end;
 
procedure TForm1.NewClick(Sender: TObject);
begin
Tree.Items.Clear;
 
Tree.Items.Add(nil, 'Компьютерная техника');
Tree.Items.AddChild(Tree.Items.Item[0], 'Вид');
Tree.Items.AddChild(Tree.Items.Item[1], 'планшеты');
Tree.Items.AddChild(Tree.Items.Item[1], 'нетбуки');
Tree.Items.AddChild(Tree.Items.Item[1], 'ноутбуки');
Tree.Items.AddChild(Tree.Items.Item[0], 'Тип');
 
 
 
Tree.Items.AddChild(Tree.Items.Item[5], 'диагональ экрана');
Tree.Items.AddChild(Tree.Items.Item[5], 'расширение');
 
 
 
tree.FullExpand;
// tree.PopupMenu:= menutree;
 
end;
 
procedure TForm1.TreeClick(Sender: TObject);
begin
if tree.Selected.Count=0 then
begin
  working.Clear;
  working.Lines.LoadFromFile( tree.Selected.Text+'.txt');
 
  try
     working.Lines.LoadFromFile( tree.Selected.Text+'.txt');
  except
     working.Lines.add('нет даных');
 
     end;
end;
end;
 
procedure TForm1.Color1Click(Sender: TObject);
begin
if Color.Execute then
   working.Color:=Color.color;
end;
 
procedure TForm1.Panel1Resize(Sender: TObject);
begin
    bar.Panels[1].Text:='размеры панели   ' +inttostr(Panel1.width)+' : ' + inttostr(Panel1.height)
end;
 
procedure TForm1.REnameClick(Sender: TObject);
  var
  value : string;
 
 begin
 
 if tree.Selected=nil then
 begin
  showmessage ('не выбран узел');
  exit;
  end;
 
 if tree.Selected.Count=0 then
  showmessage ('нельзя переименовать узел')
  else
 
    if  InputQuery('переименование', 'укажите новое название', value)
    then tree.Selected.Text := value;
 
end;
 
 
procedure TForm1.Downloar1Click(Sender: TObject);
begin
Download.Click;
end;
 
procedure TForm1.New1Click(Sender: TObject);
begin
New.Click ;
end;
 
procedure TForm1.delete1Click(Sender: TObject);
begin
Deleted.Click;
end;
 
 
procedure TForm1.Rename1Click(Sender: TObject);
begin
  REname.Click;
end;
procedure TForm1.Shrift2Click(Sender: TObject);
begin
Color1.Click ;
end;
 
procedure TForm1.SaveClick(Sender: TObject);
 var
 FName:String;
 
begin
    SaveDialog1.FileName := FName;
if SaveDialog1.Execute then
 begin
  FName := SaveDialog1.FileName;
  tree.SaveToFile(FName);
 end;
 
end;
 
procedure TForm1.widthFormClick(Sender: TObject);
 
   var
  value1 : string;
    begin
    try
    if  InputQuery('Ширина', 'Укажите ширину', value1)
    then Form1.width :=StrToInt(value1);
    except
    ShowMessage ('Ширина задана не верно');
    end;
end;
 
end.
нужно вместо "размеры панели" в строке состояния вывести содержание второй строки из ТMemo(у меня она называется working)
т.е. чтобы если слева нажимаешь,например, на "планшеты", то в строке состояния,вместо "размеры панели", появлялось"Вторая строка: Acer"
Получить содержание второй строки из TMemo
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2013, 16:15
Ответы с готовыми решениями:

Даны две строки. Получить строку, в которой чередуются слова первой и второй строки
Даны две строки. Получить строку, в которой чередуются слова первой и второй строки. Если в одной...

Получить матрицу умножением элементов каждой строки первой матрицы на максимум соответствующей строки второй
Даны две действительные матрицы порядка (nxn). Получить новую матрицу умножением элементов...

Получить строку, в которой чередуются слова первой и второй строки
Даны две строки. Получить строку, в которой чередуются слова первой и второй строки. Если в одной...

Получить строку, в которой чередуются слова первой и второй строки
Даны две строки. Получить строку, в которой чередуются слова первой и второй строки. Если в одной...

21
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
14.12.2013, 21:53 2
Delphi
1
memo1.lines[2]
0
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,365
14.12.2013, 22:07 3
Я правильно понял, что список справа, это набор элементов для формирования дерева слева?
0
0 / 0 / 1
Регистрация: 31.05.2013
Сообщений: 28
14.12.2013, 22:11  [ТС] 4
да,ты правильно понял
0
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
14.12.2013, 22:11 5
Цитата Сообщение от Пытливый Посмотреть сообщение
Я правильно понял, что список справа, это набор элементов для формирования дерева слева?

Судя по коду так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.TreeClick(Sender: TObject);
begin
if tree.Selected.Count=0 then
begin
  working.Clear;
  working.Lines.LoadFromFile( tree.Selected.Text+'.txt');
 
  try
     working.Lines.LoadFromFile( tree.Selected.Text+'.txt');
  except
     working.Lines.add('нет даных');
 
     end;
end;
end;
0
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,365
14.12.2013, 22:13 6
Тогда вы неудачно выбрали компонент для этого. Загружайте список лучше в ListBox. Я так подозреваю, что на самом деле ван нужно не просто вторую строку, а текущую строку из элементов справа. Так?
0
0 / 0 / 1
Регистрация: 31.05.2013
Сообщений: 28
14.12.2013, 22:17  [ТС] 7
мне нужно именно вторую строку из текущих элементов справа
0
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
14.12.2013, 22:22 8
Цитата Сообщение от ElegantLady Посмотреть сообщение
нужно вместо "размеры панели" в строке состояния вывести содержание второй строки из ТMemo(у меня она называется working)
т.е. чтобы если слева нажимаешь,например, на "планшеты", то в строке состояния,вместо "размеры панели", появлялось"Вторая строка: Acer"
По условию что написано ничего не сказано о том что б строку можно было выбрать из списка и показать в панеле

Добавлено через 1 минуту
Цитата Сообщение от ElegantLady Посмотреть сообщение
мне нужно именно вторую строку из текущих элементов справа
тогда так, будет браться вторая строка строка из Memo, в начале ошибся написав 2
Delphi
1
working.Lines[1]
0
0 / 0 / 1
Регистрация: 31.05.2013
Сообщений: 28
14.12.2013, 22:24  [ТС] 9
мне выбрать и не нужно.. мне нужно чтобы она сама появлялась в строке состояния,когда я нажимаю на "планшеты"," нетбуки" и т.д.
но нужна именно вторая строка

Добавлено через 1 минуту
должно выглядеть вот так?
Delphi
1
bar.panels[1].Text:= working.Lines[1];
0
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,365
14.12.2013, 22:26 10
Ну я так и понял. Тогда как я сказал ранее, лучше загрузить элементы в ListBox:
Delphi
1
ListBox1.Items.LoadFromFile('c:\Items.txt');
а получить значение текущего можно так:
Delphi
1
ListBox1.Items.Strings[ListBox1.ItemIndex]
0
0 / 0 / 1
Регистрация: 31.05.2013
Сообщений: 28
14.12.2013, 22:34  [ТС] 11
Цитата Сообщение от Пытливый Посмотреть сообщение
Ну я так и понял. Тогда как я сказал ранее, лучше загрузить элементы в ListBox:
Delphi
1
ListBox1.Items.LoadFromFile('c:\Items.txt');
а получить значение текущего можно так:
Delphi
1
ListBox1.Items.Strings[ListBox1.ItemIndex]
а без того чтобы загружать элементы в ListBox никак?
0
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,365
14.12.2013, 22:39 12
Понимаете в чем проблема,у компонента Memo как такового нет понятия выделенная строка, есть там выделенный текст, но это несколько другое. Лучше сразу замените компонент, он у вас идеологически не подходит для того что вы делаете.
0
0 / 0 / 1
Регистрация: 31.05.2013
Сообщений: 28
14.12.2013, 22:44  [ТС] 13
Цитата Сообщение от Пытливый Посмотреть сообщение
Понимаете в чем проблема,у компонента Memo как такового нет понятия выделенная строка, есть там выделенный текст, но это несколько другое. Лучше сразу замените компонент, он у вас идеологически не подходит для того что вы делаете.
тогда я не совсем понимаю куда нужно вставить то,что вы написали
0
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
14.12.2013, 22:46 14
Пытливый,
Немного путаеш, ей надо только 2 строка из TMemo, а не выделять строки в самом TMemo
0
0 / 0 / 1
Регистрация: 31.05.2013
Сообщений: 28
14.12.2013, 22:52  [ТС] 15
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
Пытливый,
Немного путаеш, ей надо только 2 строка из TMemo, а не выделять строки в самом TMemo
я написала
Delphi
1
bar.panels[1].Text:= working.Lines[1];
но оно что-то не работает
0
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
14.12.2013, 23:00 16
Цитата Сообщение от ElegantLady Посмотреть сообщение
я написала
А куда это записано?
0
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,365
14.12.2013, 23:00 17
Если вас устраивает то что предлагает Игорь[Igor] то тогда все что дальше, можете не читать:

Все просто.
1. Убираем из формы ваш компонент TMemo. Вместо него добавляем TListBox. Можете его даже назвать также working.
Далее...
2. У вас есть код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.TreeClick(Sender: TObject);
begin
if tree.Selected.Count=0 then
begin
  working.Clear;
  working.Lines.LoadFromFile( tree.Selected.Text+'.txt');
 
  try
     working.Lines.LoadFromFile( tree.Selected.Text+'.txt');
  except
     working.Lines.add('нет даных');
 
     end;
end;
end;
слегка меняем его под новый компонент:
Delphi
1
2
3
4
5
6
7
procedure TForm1.TreeClick(Sender: TObject);
begin
 if tree.Selected.Count=0 
 then if FileExists(tree.Selected.Text+'.txt')
        then working.Items.LoadFromFile(tree.Selected.Text+'.txt')
        else working.Items.add('Нет даных');
end;
Ну и дальше видимо придется подправить в коде старые обращения working.Lines на новые working.Items
0
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
14.12.2013, 23:01 18
Здесь оно должно быть
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.TreeClick(Sender: TObject);
begin
if tree.Selected.Count=0 then
begin
  working.Clear;
  working.Lines.LoadFromFile( tree.Selected.Text+'.txt');
 
  try
     working.Lines.LoadFromFile( tree.Selected.Text+'.txt');
  except
     working.Lines.add('нет даных');
 
     end;
 
bar.panels[1].Text:= working.Lines[1];
 
end;
end;
0
3584 / 2194 / 692
Регистрация: 29.05.2013
Сообщений: 9,365
14.12.2013, 23:03 19
Тогда уж перенесите хотябы в try после загрузки удачной
а то вы обращаетесь к несуществующей строке
0
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
14.12.2013, 23:05 20
И еще нужно проверку сделать на случай если нет строк или меньше

Delphi
1
2
if working.Lines.count>=2 then
bar.panels[1].Text:= working.Lines[1];
Добавлено через 1 минуту
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
if tree.Selected.Count=0 then
и тут что-то не так
0
14.12.2013, 23:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2013, 23:05
Помогаю со студенческими работами здесь

Получить новую строку из символов первой строки, которых нет во второй
Помогите написать программу Добавлено через 27 секунд Дана срока, состоящая из букв и цифр, и...

Получить новую строку из символов первой строки, которых нет во второй
дана срока, состоящая из букв и цифр, и строка из цифр и других знаков. Получить новую строку из...

Получить новую матрицу умножением элементов каждой строки первой и второй матрицы
всем привет!! помогите с решением задачи. Ну первый пункт понятно, а вот второй пункт: 1.Даны две...

Получить новую строку, состоящую из символов первой строки, которых нет во второй
помогите плиз!!! срочно надо! никак не могу решить!! буду благодарна очень!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru