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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2014, 19:18   #21
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну дык я же говорил - завести переменку. Переменка будет указывать на нужный мемо. Допустим все мемки будут в одном Panel, тогда метод проходя по Panel.Control[Тут номер контрола] можно получать очередной мем.
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Memo4: TMemo;
    Panel1: TPanel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 for i:=1 to Panel1.ControlCount-1 do TMemo(Panel1.Controls[i]).Hide;
 Panel1.Tag:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 //Кнопка "Туда"
  if Panel1.Tag<Panel1.ControlCount-1 then begin
    TMemo(Panel1.Controls[Panel1.Tag]).Hide;
    Panel1.Tag:=Panel1.Tag+1;
    TMemo(Panel1.Controls[Panel1.Tag]).Show;
  end else begin
    TMemo(Panel1.Controls[Panel1.Tag]).Hide;
    Panel1.Tag:=0;
    TMemo(Panel1.Controls[Panel1.Tag]).Show;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 //Кнопка "Обратно"
  if Panel1.Tag>0 then begin
    TMemo(Panel1.Controls[Panel1.Tag]).Hide;
    Panel1.Tag:=Panel1.Tag-1;
    TMemo(Panel1.Controls[Panel1.Tag]).Show;
  end else begin
    TMemo(Panel1.Controls[Panel1.Tag]).Hide;
    Panel1.Tag:=Panel1.ControlCount-1;
    TMemo(Panel1.Controls[Panel1.Tag]).Show;
  end;
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.04.2014, 20:26   #22
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Как-то я не понял идею...
По факту это предложение ничем (почти) не отличается от предложения отдельных Мемо для каждого текста.
ИМХО улучшения не будет.
Компоненты, особенно визуальные, как правило, потребляют значительно больше памяти, чем обычные классы. Если текстов и, следовательно Memo, будет N-ное количество, то могут возникнуть весьма серьезные "тормоза" даже на мощных устройствах.
Поэтому данные в визуальные компоненты лучше просто выводить для просмотра или редактирования.
Кстати, это справедливо и для обычных программ (для ПК).
Цитата:
А пхать все в исполнимый файл это не по феншую.
Согласен. Только, как удалось установить методом перебора вариантов, сама ТС, почему-то очень хочет поместить всё в exe-шник. Может быть ТС преследует какие-то определённые цели? Всё-таки даже монолитная архитектура приложений не лишена преимуществ. В прочем, здесь сложно сказать что-либо определённое, т.к. не телепат.
Streletz вне форума Ответить с цитированием
Старый 05.04.2014, 20:27   #23
=_=Настя=_=
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 36
По умолчанию

Куча ошибок...

Код:
[DCC Error] Unit3.pas(37): E2362 Cannot access protected symbol TControl.Hide
[DCC Error] Unit3.pas(39): E2362 Cannot access protected symbol TControl.Show
[DCC Error] Unit3.pas(41): E2362 Cannot access protected symbol TControl.Hide
[DCC Error] Unit3.pas(42): E2003 Undeclared identifier: 'ControlCount'
[DCC Error] Unit3.pas(43): E2362 Cannot access protected symbol TControl.Show
[DCC Error] Unit3.pas(49): E2003 Undeclared identifier: 'ControlCount'
[DCC Error] Unit3.pas(50): E2362 Cannot access protected symbol TControl.Hide
[DCC Error] Unit3.pas(52): E2362 Cannot access protected symbol TControl.Show
[DCC Error] Unit3.pas(54): E2362 Cannot access protected symbol TControl.Hide
[DCC Error] Unit3.pas(56): E2362 Cannot access protected symbol TControl.Show
[DCC Error] Unit3.pas(63): E2003 Undeclared identifier: 'ControlCount'
[DCC Error] Unit3.pas(63): E2362 Cannot access protected symbol TControl.Hide
=_=Настя=_= вне форума Ответить с цитированием
Старый 05.04.2014, 20:31   #24
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от =_=Настя=_= Посмотреть сообщение
Куча ошибок...
Как я понимаю, Вы всё-таки решили использовать Memo? Лучше воспользуйтесь TStringList. В прочем, Вам виднее...
Ошибки синтаксические. Покажите код.
Streletz вне форума Ответить с цитированием
Старый 05.04.2014, 20:34   #25
=_=Настя=_=
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Как я понимаю, Вы всё-таки решили использовать Memo? Лучше воспользуйтесь TStringList. В прочем, Вам виднее...
Ошибки синтаксические. Покажите код.
Я не знаю как правильно сделать через TStringList, а с memo код который скинул Stilet.
=_=Настя=_= вне форума Ответить с цитированием
Старый 05.04.2014, 21:11   #26
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от =_=Настя=_= Посмотреть сообщение
Я не знаю как правильно сделать через TStringList.
Создаёте переменную типа TStringList. Инициализируете её. С помощью метода Add добавляете в неё текст. Вывод в Memo, как из обычного массива. Навигация "вперёд" и "назад" с помощью переменной типа Integer. При этом отслеживаете, чтобы она была больше "0" и меньше либо равна [Количество текстов]-1.
Цитата:
Сообщение от =_=Настя=_= Посмотреть сообщение
а с memo код который скинул Stilet.
Stilet выложил свой код, но ошибки-то возникают в Вашем.
Так что, в каком бы направлении Вы не двигались, будь то Memo или TStringList, в любом случае, помимо сообщений компилятора, код в студию.

Последний раз редактировалось Streletz; 05.04.2014 в 21:21.
Streletz вне форума Ответить с цитированием
Старый 05.04.2014, 21:23   #27
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Проще наврядли
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    procedure SaveToMemo;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const cText1: array[1..9] of String =
              ('Текст1 строка1','Текст1 строка2','Текст1 строка3',
               'Текст2 строка1','Текст2 строка2','Текст2 строка3','Текст2 строка4',
               'Текст3 строка1','Текст3 строка2');
      Count = 3;
      Indexes: array[1..Count] of Integer = (1,4,8);

var Number: Integer = 0;

procedure TForm1.SaveToMemo;
var i,k: Integer;
begin
  Memo1.Clear;
  if Number=Count then k:=High(cText1) else k:=Indexes[Number+1]-1;
  for i:=Indexes[Number] to k do Memo1.Lines.Add(cText1[i]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Inc(Number);
  if Number>Count then Number:=1;
  SaveToMemo;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Dec(Number);
  if Number<1 then Number:=Count;
  SaveToMemo;
end;

end.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.04.2014, 21:33   #28
=_=Настя=_=
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Проще наврядли
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    procedure SaveToMemo;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const cText1: array[1..9] of String =
              ('Текст1 строка1','Текст1 строка2','Текст1 строка3',
               'Текст2 строка1','Текст2 строка2','Текст2 строка3','Текст2 строка4',
               'Текст3 строка1','Текст3 строка2');
      Count = 3;
      Indexes: array[1..Count] of Integer = (1,4,8);

var Number: Integer = 0;

procedure TForm1.SaveToMemo;
var i,k: Integer;
begin
  Memo1.Clear;
  if Number=Count then k:=High(cText1) else k:=Indexes[Number+1]-1;
  for i:=Indexes[Number] to k do Memo1.Lines.Add(cText1[i]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Inc(Number);
  if Number>Count then Number:=1;
  SaveToMemo;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Dec(Number);
  if Number<1 then Number:=Count;
  SaveToMemo;
end;

end.
А можете обьяснить как код работает?
=_=Настя=_= вне форума Ответить с цитированием
Старый 05.04.2014, 21:39   #29
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
А можете обьяснить как код работает?
И вы собрались под андроид писать? Движок работает, пропеллер крутится, самолет летит. Вот и весь принцип. Код аналогично
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.04.2014, 21:45   #30
=_=Настя=_=
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
И вы собрались под андроид писать? Движок работает, пропеллер крутится, самолет летит. Вот и весь принцип. Код аналогично
Код:
//Вперед
procedure TForm1.Button1Click(Sender: TObject);
begin
  Inc(Number);
  if Number>Count then Number:=1;
  SaveToMemo;
end;
//Назад
procedure TForm1.Button2Click(Sender: TObject);
begin
  Dec(Number);
  if Number<1 then Number:=Count;
  SaveToMemo;
end;
правильно?
=_=Настя=_= вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi xe5 + android + BD MAZADA БД в Delphi 2 05.02.2014 10:14
Разработка приложения на Android Roscoe Фриланс 3 27.11.2013 23:37
Разработка приложения на Android BioVR Фриланс 5 26.11.2013 15:03
Delphi XE5: Android рисовалка lamer811 Общие вопросы Delphi 1 21.11.2013 19:13
Delphi XE5 +Android приложения furstenberg Общие вопросы Delphi 4 30.10.2013 11:09