quinta-feira, 24 de janeiro de 2019

FMX - Matriz bidimensional de string

Aqui está mais um exemplo de uso
do objeto memo do C++ Builder.
Neste exemplo o memo é carregado 
por uma matriz bidimensional de string,
Note que um scrollbar horizontal e
vertical foi ativado para facilitar a leitura
do texto que possui mais de 60 linhas.




//---------------------------------------------------------------------------

#include <fmx.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

void __fastcall TForm1::OnShow(TObject *Sender)
{
  Label1 ->Text = "Memo - Matriz bidimensional de string";
 char texto [ 63 ] [ 45 ] =  {
"Debaixo dumas mui formosas tamareiras,      \n",
"Estando já Berseba na escuridão.            \n",
"As aves escutando, entre as roseiras,       \n",
"Se vê andar o patriarca Abraão.             \n",
"Seu coração perante Deus está aflito,       \n",
"Pois quer que O sirvamos sem murmuração;    \n",
"E por amor pergunta ao Senhor bendito:      \n",
"O meu amado filho queres Tu, então?         \n",
"                                            \n",
"A voz de Jeová potente é ouvida:            \n",
"O teu Isaque oferece para Mim,              \n",
"Embora fiques com tu'alma dolorida,         \n",
"Pois te abençoo se fizeres tu assim.        \n",
"De abatido Abraão se torna forte            \n",
"E Canta hinos, pois com fé medita já:       \n",
"Deus pode o meu filho libertar da morte!    \n",
"E não temendo, segue para Moriá.            \n",
"                                            \n",
"Ao pé do monte do supremo sacrifício,       \n",
"Profunda duvida entrou em Abraão:           \n",
"Irei perder da minha vida o beneficio?      \n",
"E triste começou subir com lentidão,        \n",
"Pois ia dar, do coração a esperança         \n",
"- No seu outono, sacrifício duma flor,      \n",
"Assim levou o seu cordeiro à matança,       \n",
"Em obediência ao mandato do Senhor.         \n",
"                                            \n",
"Isaque com a lenha, presto vai na frente,   \n",
"Oh! Quanto é formoso para Abraão!           \n",
"Mas eis que volta p'ra seu pai suavemente   \n",
"E lhe dirige esta interrogação:             \n",
"O fogo e a lenha estou vendo que trouxemos, \n",
"Mas o cordeiro d'holocausto onde está?      \n",
"E a resposta de Abraão na Bíblia temos:     \n",
"Meu filho, Deus pra Si, Cordeiro proverá    \n",
"                                            \n",
"Chegando Abraão aonde Deus mandara,         \n",
"Fez um altar e nele a lenha arrumou:        \n",
"E a seu filho, que já dantes amarrara,      \n",
"Tomando nos seus braços sobre o altar deitou\n",
"Mas quando Abraão foi para imolá-lo,        \n",
"O Anjo do Senhor bradou-lhe desde os céus:  \n",
"A tua mão, ó não estendas p'ra matá-lo;     \n",
"Porquanto eu agora sei que temes Deus.      \n",
"                                            \n",
"Erguendo Abraão seus olhos de repente,      \n",
"Vê um cordeiro, que no mato preso está,     \n",
"E o tomando, oferece-o alegremente;         \n",
"Assim No monte do Senhor se proverá.        \n",
"A voz do Anjo é ouvida novamente;           \n",
"Diz o Senhor: Porque fizeste esta ação,     \n",
"Deveras, Eu abençoarei a tua semente,       \n",
"E nela, as nações benditas se farão.        \n",
"                                            \n",
"O nosso Isaque oferecemos com firmeza       \n",
"No Moriá onde finda o ideal,                \n",
"Pois foi ali que alcançaram fortaleza,      \n",
"Os vencedores, sob canto angelical;         \n",
"Ali, o nosso Deus jurou fidelidade,         \n",
"Também os santos se encheram de valor,      \n",
"E só teremos a perfeita santidade,          \n",
"Depois que formos para o monte do Senhor    \n" };
int i = 0;
Memo1->Text = Memo1->Text + AnsiString ( texto [ i ] );
//Memo1->Text = Memo1->Text + AnsiString("\n");
Memo1->SelStart = 0;
Text1->Text = "Por: Samuel Lima";
}

//---------------------------------------------------------------------------


//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Forms.hpp>
#include <FMX.Objects.hpp>
#include <FMX.Types.hpp>
#include <FMX.Controls.Presentation.hpp>
#include <FMX.Memo.hpp>
#include <FMX.ScrollBox.hpp>
#include <FMX.StdCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TRectangle *Rectangle1;
TMemo *Memo1;
TLabel *Label1;
TRectangle *Rectangle2;
TRoundRect *RoundRect1;
TText *Text1;
void __fastcall OnShow(TObject *Sender);


private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------

#endif


object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Memo - Matriz bidimensional de string'
  ClientHeight = 300
  ClientWidth = 600
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  OnShow = OnShow
  DesignerMasterStyle = 0
  object Label1: TLabel
    StyledSettings = [Family]
    Position.X = 160.000000000000000000
    Position.Y = 16.000000000000000000
    Size.Width = 305.000000000000000000
    Size.Height = 25.000000000000000000
    Size.PlatformDefault = False
    TextSettings.Font.Size = 18.000000000000000000
    TextSettings.Font.StyleExt = {00040000000200000004000000}
    TextSettings.FontColor = claCrimson
    TabOrder = 1
  end
  object Rectangle2: TRectangle
    Fill.Kind = None
    Position.X = 176.000000000000000000
    Position.Y = 48.000000000000000000
    Size.Width = 257.000000000000000000
    Size.Height = 177.000000000000000000
    Size.PlatformDefault = False
    Stroke.Color = claCrimson
    Stroke.Thickness = 5.000000000000000000
    object Rectangle1: TRectangle
      Fill.Color = claNull
      Position.X = -176.000000000000000000
      Position.Y = -48.000000000000000000
      Size.Width = 600.000000000000000000
      Size.Height = 300.000000000000000000
      Size.PlatformDefault = False
      Stroke.Color = claAqua
      Stroke.Thickness = 10.000000000000000000
    end
    object Memo1: TMemo
      Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
      DataDetectorTypes = []
      ReadOnly = True
      StyledSettings = [Family, FontColor]
      TextSettings.Font.Size = 14.000000000000000000
      Position.X = 8.000000000000000000
      Position.Y = 8.000000000000000000
      Size.Width = 241.000000000000000000
      Size.Height = 161.000000000000000000
      Size.PlatformDefault = False
      TabOrder = 1
      ParentShowHint = False
      ShowHint = False
      Viewport.Width = 237.000000000000000000
      Viewport.Height = 157.000000000000000000
    end
  end
  object RoundRect1: TRoundRect
    Fill.Kind = None
    Position.X = 184.000000000000000000
    Position.Y = 232.000000000000000000
    Size.Width = 249.000000000000000000
    Size.Height = 41.000000000000000000
    Size.PlatformDefault = False
    Stroke.Color = claChartreuse
    Stroke.Thickness = 2.000000000000000000
  end
  object Text1: TText
    Position.X = 200.000000000000000000
    Position.Y = 240.000000000000000000
    Size.Width = 225.000000000000000000
    Size.Height = 25.000000000000000000
    Size.PlatformDefault = False
    TextSettings.Font.Size = 22.000000000000000000
    TextSettings.Font.StyleExt = {00040000000200000004000000}
    TextSettings.FontColor = claBlue
  end

end

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.