Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Cut


opfer.der.genauigkeit - Mi 18.09.02 14:44
Titel: Cut
Ich hab folgendes Problem. :?

Ich habe einen Button auf einem Frame sitzen der beim OnClick Ereignis
bei einer RichEditKomponente die Eigenschaft CutToClipboard erzeugt.

Allerdings soll dieser Button erst dann auf Enabled gesetzt werden, wenn der Text markiert wurde. (Voreinstellung des Buttons ist Enabeld := false)

Nunja... mein Problem ist ganz einfach, daß ich keinen Befehl mit dem ich dem Button sagen kann, daß ein Text markiert wurde.

Danke für die Hilfe.


LCS - Mi 18.09.02 14:59

Hi
Du kannst dafür das SelectionChange Ereignis der RTF Komponente verwenden. Borland liefert da auch ein ganz brauchbares Demoprogramm dazu.


Quelltext
1:
2:
3:
4:
procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
begin
   Button1.Enabled := RichEdit1.SelLength > 0;
end;


Gruss Lothar


opfer.der.genauigkeit - Mi 18.09.02 15:42

Ich wünschte ich könnte sagen, daß es funktioniert hat...
Aber trotzdem danke.
Das Problem an der ganzen Geschichte ist, daß ich das Programm übernommen habe.
Fakt ist, daß in dem Moment in dem das Programm gestartet wird bereits die RichEditKomponente mit mit einem Text geladen wird.
Delphi erkennt dies schon als ein ChangeEvent.
Ich hab leider keinen Zugang zum vollständigen Quellcode sonst würd ich ja nachdem die File geladen wurde dementsprechend IsDirty auf false setzen...
Naja is auch nicht so dramatisch. Ich werd schon was finden.
Trotzdem danke. :)

P.S.: Die Demo hab ich mir schon reingezogen... allerdings ist die auch mehr schlecht als recht.


opfer.der.genauigkeit - Mi 18.09.02 16:48

Hab mein Problem lösen können. :D


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
private
  fReadChars   : integer;

//In der Prozedure des anfänglichen ladens wird fReadChars deklariert 
// fReadChars := length(EasyRichEdit1.Lines.Text);

procedure TFrameMemoEditor.EasyRichEdit1SourceChanged(Sender: TObject;
  State: TEasyEditSourceStates);
begin
  inherited;
  //Veränderungen nach dem Laden werden ignoriert
  if bIgnorr then exit;
  //IsDirty = true?
  if IsDirty = true then
  exit;
  //Die geladene Datei wird mit der Länge der Richeditkomponente verglichen
  if length(EasyRichEdit1.Lines.Text) <> fReadChars then begin
    UndoButton.Enabled := true;
    IsDirty := true;
  end;
  exit;
end;