Zmiana stylu tekstu w RichEdit po wciśnięciu przycisku

0

Mam problem z przyciskami . Przepisuje do przycisku action który ma np. pogrubić tekst, pisze w richedit i jak chce nacisnąć na przycisk to nagle wszystkie robią sie szare i niedostępne a skróty mi działają. Wiecie może jak to naprawić?

Lub jak chce to zrobić speedbuttonem to też nie uzyskuje żadnego efektu.

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
If SpeedButton1.Down Then
re.SelAttributes.Style:= re.SelAttributes.Style + [fsBold]
else
re.SelAttributes.Style:= re.SelAttributes.Style - [fsBold];
end;
0

Czym jest to re i jakie ma podpięte zdarzenia?

0

re=RichEdit1 a przycisk ma podpięte zdarzenie RichEditBullets1

@Edit
Nie jestem pewny, ale speedbutton i inne przyciski nie mogą chyba wejść w 2 fazę "wciśniętego przycisku"

Zimny Orzeł napisał(a):

re=RichEdit1 a przycisk ma podpięte zdarzenie RichEditBullets1

A mógłbyś wytłumaczyć o co dokładnie chodzi?

0

Nie jestem pewny, ale speedbutton i inne przyciski nie mogą chyba wejść w 2 fazę "wciśniętego przycisku"

@zimny Orzeł - jeśli przycisk ma posiadać opcję "wciśniętego" to poszukaj czegoś w rodzaju TToggleBox; Wygląda jak zwykły przycisk, ale ma właściwość Checked - ona określa czy przycisk wygląda normalnie, czy jak zapadnięty;

PS: Pod Lazarusem mam takie nazwy - w Delphi nazwa klasy i właściwości mogą być inne.

0

@_13th_Dragon "chodzi o ten re - jakie ma zdarzenia? Podać ich." - mógłbyś dokładniej wyjaśnić nie za bardzo orientuje się w temacie.
@furious programming nie mogę znaleŹć coś na ten styl ewentualnie SpeedButton1.Down:=true; myślałem ale tez nie działa z poziomu kodu to wywołać.

0

To podaj cały kod.

0
// Nie mówcie ze ma to sporo błędów bo wiem :P dopiero sie uczę :) 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ToolWin, ExtActns, StdActns, ActnList,
  Menus, ImgList, OleServer, WordXP, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    MainMenu1: TMainMenu;
    ActionList1: TActionList;
    ImageList1: TImageList;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Pliki1: TMenuItem;
    Nowy1: TMenuItem;
    Otworz1: TMenuItem;
    Zapisz1: TMenuItem;
    Zapiszjako1: TMenuItem;
    N1: TMenuItem;
    Drukuj1: TMenuItem;
    N2: TMenuItem;
    Zamknij1: TMenuItem;
    Edycja1: TMenuItem;
    Format1: TMenuItem;
    Czionka1: TMenuItem;
    Cofnij1: TMenuItem;
    N3: TMenuItem;
    Wytnij1: TMenuItem;
    Kopiuj1: TMenuItem;
    Wklej1: TMenuItem;
    Usu1: TMenuItem;
    N4: TMenuItem;
    Znajdz1: TMenuItem;
    Zamien1: TMenuItem;
    N5: TMenuItem;
    ZaznaczWszysktko1: TMenuItem;
    FontDialog1: TFontDialog;
    PageSetupDialog1: TPageSetupDialog;
    RichEdit1: TRichEdit;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ColorBox1: TColorBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    EditCut1: TEditCut;
    EditCopy1: TEditCopy;
    EditPaste1: TEditPaste;
    EditSelectAll1: TEditSelectAll;
    EditUndo1: TEditUndo;
    EditDelete1: TEditDelete;
    RichEditBold1: TRichEditBold;
    RichEditItalic1: TRichEditItalic;
    RichEditUnderline1: TRichEditUnderline;
    RichEditStrikeOut1: TRichEditStrikeOut;
    RichEditBullets1: TRichEditBullets;
    RichEditAlignLeft1: TRichEditAlignLeft;
    RichEditAlignRight1: TRichEditAlignRight;
    RichEditAlignCenter1: TRichEditAlignCenter;
    FilePrintSetup1: TFilePrintSetup;
    FileExit1: TFileExit;
    SearchFind1: TSearchFind;
    SearchReplace1: TSearchReplace;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    BitBtn10: TBitBtn;
    BitBtn11: TBitBtn;
    BitBtn12: TBitBtn;
    BitBtn13: TBitBtn;
    Button1: TButton;
    SpeedButton1: TSpeedButton;

    procedure FormCreate(Sender: TObject);
    procedure Nowy1Click(Sender: TObject);
    procedure Otworz1Click(Sender: TObject);
    procedure Zapisz1Click(Sender: TObject);
    procedure Zapiszjako1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ColorBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Czionka1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  sciezka:string;
  wartosc:integer;

implementation

{$R *.dfm}


// LADOWANIE


procedure TForm1.FormCreate(Sender: TObject);
var

  i : Integer;

begin

// ICON
{
ImageList1.GetBitmap(2, bitbtn3.Glyph);
ImageList1.GetBitmap(13, bitbtn4.Glyph);
ImageList1.GetBitmap(1, bitbtn5.Glyph);
ImageList1.GetBitmap(20, bitbtn1.Glyph);
ImageList1.GetBitmap(21, bitbtn2.Glyph);
}
//Wartosci zapisu

wartosc:=1;
sciezka:=('C:\Users\Mateusz\Desktop\Ala ma Kota.txt');

//Wartosci Czcionki

  for i := 31 to Screen.Fonts.Count - 1 do
     ComboBox2.Items.Add(Screen.Fonts.Strings[i]);

end;


////////////////////////////////////////////
////////////////////////////////////////////


// NOWY DOKUMENT


procedure TForm1.Nowy1Click(Sender: TObject);

var

i: integer;
fSave : TextFile;

begin

  case MessageDlg('Czy chcesz zapisac?', mtConfirmation, [mbYes ,mbNo, mbCancel], 0) of

    6:
      begin
     if FileExists(sciezka) then
      begin
      AssignFile(fSave,sciezka);
      Rewrite(fSave);
        for i := 0 to RichEdit1.Lines.Count -1 do
        begin
         Write(fSave, RichEdit1.Lines.Strings[i]);
        end;
     Append(fSave);
     closefile(fSave);
     wartosc:=1;
     RichEdit1.Clear;
     end


      else


        if SaveDialog1.Execute then
          AssignFile(fSave, SaveDialog1.FileName);
          Rewrite(fSave);
          for i := 0 to RichEdit1.Lines.Count -1 do
            begin
            Write(fSave, RichEdit1.Lines.Strings[i]);
            end;
          Append(fSave);
          closefile(fSave);
      wartosc:=1;
      RichEdit1.Clear;
      end;


    7:
    begin
    RichEdit1.Clear;
    wartosc:=1;
    end;

    2: wartosc:=0;

  end;

end;


////////////////////////////////////////////
////////////////////////////////////////////


// WCZYTYWANIE


procedure TForm1.Otworz1Click(Sender: TObject);

var

  TF : TextFile;
  S : String;

begin

 if OpenDialog1.Execute then
   begin
     AssignFile(TF, OpenDialog1.FileName);
     Reset(TF);
       while not eof(TF) do
         begin
         Readln(TF, S);
         RichEdit1.Lines.Add(S);
         end;
       CloseFile(TF);
   end;
   wartosc:=0;
   sciezka:= ExtractFileDir(OpenDialog1.FileName)+'\'+ExtractFileName(OpenDialog1.FileName);
end;


////////////////////////////////////////////
////////////////////////////////////////////


// ZAPIS


procedure TForm1.Zapisz1Click(Sender: TObject);

var

i: integer;
fSave : TextFile;

begin

if wartosc=0 then
begin
  AssignFile(fSave,sciezka);
  Rewrite(fSave);
    for i := 0 to RichEdit1.Lines.Count -1 do
    begin
      Writeln(fSave, RichEdit1.Lines.Strings[i]);
    end;
Append(fSave);
closefile(fSave);
wartosc:=0;

end;

if wartosc =1 then
begin
    SaveDialog1.Execute;
    AssignFile(fSave, SaveDialog1.FileName);
    Rewrite(fSave);
    for i := 0 to RichEdit1.Lines.Count -1 do
      begin
      Writeln(fSave, RichEdit1.Lines.Strings[i]);
      end;
    Append(fSave);
    closefile(fSave);
 wartosc:=0;

sciezka:= ExtractFileDir(SaveDialog1.FileName)+'\'+ExtractFileName(SaveDialog1.FileName);
end;

end;


////////////////////////////////////////////
////////////////////////////////////////////


// ZAPIS JAKO


procedure TForm1.Zapiszjako1Click(Sender: TObject);

var

i: integer;
fSave : TextFile;

begin

 if SaveDialog1.Execute then

    AssignFile(fSave, SaveDialog1.FileName);

    Rewrite(fSave);
    for i := 0 to RichEdit1.Lines.Count -1 do
      begin
      Writeln(fSave, RichEdit1.Lines.Strings[i]);
      end;
    Append(fSave);
    closefile(fSave);
//sciezka:= ExtractFileDir(SaveDialog1.FileName)+'\'+ExtractFileName(SaveDialog1.FileName);

end;



////////////////////////////////////////////
////////////////////////////////////////////


// CZCIONKA


procedure TForm1.ComboBox1Change(Sender: TObject);
begin
RichEdit1.SelAttributes.Color:=ColorBox1.Selected;
end;


////////////////////////////////////////////
////////////////////////////////////////////


// KOLOR
procedure TForm1.ColorBox1Change(Sender: TObject);
begin
RichEdit1.SelAttributes.Size:=(StrToInt(ComboBox1.Text));

end;


////////////////////////////////////////////
////////////////////////////////////////////


// ROZMIAR


procedure TForm1.ComboBox2Change(Sender: TObject);
begin
RichEdit1.Font.Name:=ComboBox2.Text;
end;

////////////////////////////////////////////
////////////////////////////////////////////


// CZCIONKA #2 PANEL

procedure TForm1.Czionka1Click(Sender: TObject);
begin
  if FontDialog1.Execute then
     begin
     RichEdit1.Font.Color:=FontDialog1.Font.Color;
     RichEdit1.Font.Size:=FontDialog1.Font.Size;
     RichEdit1.Font.Name:=FontDialog1.Font.Name;
     RichEdit1.Font.Style:=FontDialog1.Font.Style
     end;
end;


////////////////////////////////////////////
////////////////////////////////////////////


// ZEGAREK


procedure TForm1.BitBtn1Click(Sender: TObject);
begin
RichEdit1.Lines.Add(TimeToStr(Time));
end;
////////////////////////////////////////////
////////////////////////////////////////////


// DATA
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
RichEdit1.Lines.Add(DateToStr(Date));
end;
////////////////////////////////////////////
////////////////////////////////////////////


// SKROTY
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Zapisz1.Click;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Otworz1.Click;
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
Nowy1.Click;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1.Lines.Add(sciezka);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
If SpeedButton1.Down Then
richedit1.SelAttributes.Style:= richedit1.SelAttributes.Style + [fsBold]
else
richedit1.SelAttributes.Style:= richedit1.SelAttributes.Style - [fsBold];
end;

end.
0

Wydaje mi się że chodzi ci o SpeedButton1.GroupIndex=1; można zrobić to w inspektorze.
Jeżeli nie, to jeszcze raz po ludzku (może z obrazkami) wytłumacz co się dzieje.

Tak przy okazji, naucz się podpinać kilka zdarzeń pod jedną metodę, czyli nie potrzebujesz BitBtn3Click tylko dla BitBtn3 w zdarzeniu OnClick wpisujesz Otworz1Click

0

Rozwiązywaliśmy coś innego a mi chodziło o zięcie 1. ja coś piszemy i np. cichłbym walnąć kursywę lub coś innego to dostaje zdjęcie 2 efektu z 0 działaniem a kiedy klikne na pole richedit1 to powrotem wracam do zdiecia 1 czyli przyciski są aktywne -- jak by co skróty tych przycisków działają poprawnie z efektem na richedit.

0

Bold i Italik mają mieć różny GroupIndex
Natomiast Align: Center Left i Right wspólny GroupIndex, oprócz tego wszystkie muszą mieć AllowAllUp=true

0

A gdzie ten GroupIndex znajde ?

@_13th_Dragon Miałbyś chwilkę wytłumaczyć co i gdzie miałbym zmienić?

0

Object inspector? czy coś innego bo jakoś zielonym być :D

0

Wybaczcie panowie administratorzy ale styczność z tym językiem mam dopiero od 3 miesięcy i nie znam niektórych podstawowych informacji, może jak by kotś mi to pokazał ty bym zrozumiał ale samemu bez ładu ni składu jestem ogólnej wiedzy.

0

Więc kliknij sobie na Object inspector i sprawdź czy są tam wspomniane właściwości (no chyba że alfabetu nie znasz - czego należy się spodziewać po ogólnej wiedzy), zamiast godzinę czekać jak ktoś cie odpowie.

0
AllowAllUp=true

Gdzie takie cuś znajdę?

Chyba że ustawie actionlist wartość stage:asSuspendedEnabled to przyciski są ciągle dostępne ale dalej nie działają poprawnie

@Do zamknięcia i z góry dziękuje za poświęcony czas.

0

Tak btw to kod jest tragiczny jak na aż trzy miesiące nauki. Przede wszystkim po jaką cholerę tak wczytywać i zapisywać plik, skoro są do tego gotowe metody?

0

Autorze odpowiadając na Twoje pytanie poniżej na czerwono zaznaczyłem gdzie można znaleźć AllowAllUp=true oraz Object Inspector

A co do komentarza @olesio to zastosuj się do tego w pierwszej kolejności bo patrzeć się na to nie da.
Na wszelki wypadek gdybyś nie załapał to:

RichEdit1.Lines.LoadFromFile('C:/test.txt');
RichEdit1.Lines.SaveToFile('C:/test.txt');

Przechwytywanie.PNG

0

Dzięki ale znalazłem to juz wcześniej a co do tego zapisu i odczytu jest to narzucone z góry.

1 użytkowników online, w tym zalogowanych: 0, gości: 1