Перейти к содержанию
Fire Monkey от А до Я
  • 0

Чат - элементы форм


gdm_it

Вопрос

Здравствуйте, какие элеиенты форм лучше применить чтобы чат на телефоне смотрелся лучше чем просто в мемо.

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

 

Вопрос :

какие элементы тут можно применить, чтобы получить желаемое приятное глазу

 

движение к этому

2731760.jpg

Изменено пользователем gdm_it
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Пока тема горяча, из примеров подсказанных выше

procedure TForm2.Button1Click(Sender: TObject);
var
CR: TCalloutRectangle;
L: TText;
TmpImg: TImage;
begin
  CR := TCalloutRectangle.Create(Self);
  CR.Parent := VSB;
  CR.Align := TAlignLayout.alBottom;
  CR.CalloutPosition := TCalloutPosition.cpLeft;
  CR.Margins.Top := 10;
  CR.Margins.Bottom := 10;
  CR.Margins.Right := 5;
  CR.Height := 75;

  L := TText.Create(Self);
  L.Parent := CR;
  L.Align := TAlignLayout.alClient;
  L.Text := 'A quick brown fox jumped over the yellow log running away from the pink dog and ran down the lane.';
  L.Margins.Left := 15;
  L.Margins.Right := 5;
  L.Width := CR.Width-20;

  L.WordWrap := True;
  L.AutoSize := True;
  L.OnPaint := LabelPaint;

  TmpImg := TImage.Create(Self);
  TmpImg.Parent := CR;
  TmpImg.Align := TAlignLayout.alRight;
  TmpImg.Bitmap.Assign(Image1.Bitmap);
  TmpImg.Width := 75;
end;

тут создается динамически форма с сообщением, но как создать динамически сообщения из истории, тамже нужно переменные объявлять?

Ссылка на комментарий
  • 0

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

 

задача есть случайное число истории собщения и их нужно отобразить в томже виде что и новое сообщение, рамка автарка текст и т.д.

Ссылка на комментарий
  • 0

Я бы рекомендовал посмотреть здесь.

Там много чего схожего. Большая часть построена на стилях, что, в свою очередь, решает Вашу "задачу".

Не вижу никаких сложностей. Ну и для примера:

post-115-0-57117600-1442510461_thumb.jpg

Ссылка на комментарий
  • 0

Пользуюсь Rad Studio XE8...там нету параметра BindingName, как заполнять элементы своего стиля?

 

на  попытку заполнить как в найденых примерах  item.Binding['text1']  ругается

Изменено пользователем gdm_it
Ссылка на комментарий
  • 0

пишу "от руки", так что...

допустим в вашем ListBoxItem есть дополнительный компонент TText (для отображения какого-то "иного" текста, а не основного), StyleName которого вы называете "messagecaption" (или как вашей душе угодно).

тогда обращение к данному компоненту TText должно выглядеть следующим образом

item{ваш_конкретный_итем}.BeginUpdate;
try
  item.StylesData['messagecaption.Text'] := 'тра-ля-ля'; // ваш текст
finally
  item.EndUpdate;
end;

ну вот все в таком духе...

 

З.Ы. и при чем тут Binding ?

Ссылка на комментарий
  • 0

спс но пока не получается

 

 

делаю правдо на прямую item.StylesData['messagecaption.Text'] := 'тра-ля-ля'; // ваш текст  

 

 

ЗЫ Binding это я ролик увидел японский с примером, как раз все было наглядно, но не пошло

Ссылка на комментарий
  • 0

так и не могу понять почему пустые итемы добавляются

008fd0f2cc28.png

 

4b7ca4cc84a4.png

 

 

 

на кнопку повесил такое действие

  Item := TListBoxItem.Create(nil);
  Item.Parent := ListBox2;
        //  Item.StyleLookup := 'mystyle';
  Item.StylesData['text1style.Text'] := 'Хотел тут свой текст';

в результате пустые новые итомы, что я забыл еще сделать?

Изменено пользователем gdm_it
Ссылка на комментарий
  • 0
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ListBox,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.Layouts;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    StyleBook1: TStyleBook;
    ListBoxItem1: TListBoxItem;
    ListBoxItem2: TListBoxItem;
    ListBoxItem3: TListBoxItem;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
var
  item: TListBoxItem;
begin
  item := TListBoxItem.Create(nil);
  item.BeginUpdate;
  item.Parent := ListBox1;
  Item.StyleLookup := 'ListBoxItem2Style1';
  item.StylesData['text2.Text'] := 'Хотел тут свой текст';
  item.Text := 'Верхняя строка!';
  item.Height:=45;
  item.EndUpdate;
end;

end.

вот выводит все!

Ссылка на комментарий
  • 0

Опять споткнулся. :(

 

сделал сложный лояут, и перестали заполнятся данные по примеру

  Item.StyleLookup := 'layout1style';
  item.StylesData['text2style.Text'] :='Мой текст';

как тут правильно обратиться к text2style?

 

93bdcf58abc9.png

Изменено пользователем gdm_it
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...