Autor Beitrag
Scotch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: Sa 02.12.06 22:01 
Hallo,
ich erstelle zur Laufzeit auf ein zur Laufzeit erstelltem Tab ein SynMemo.
Wenn ich jetzt mein Programm starte und bei ein oder mehrere Zeichen markiere und die
Entf Taste drücke, wird die der Tab und das Memo entfernt.
Woran kann das liegen?

Gruß Ingo
Andidreas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows XP Pro
BDS 2006
BeitragVerfasst: Sa 02.12.06 22:55 
Hm, gute Frage. Aber mal ne andere: wo ist der Sourcecode Deiner Löschroutine? Wie soll Dir jemand so helfen, etwa durch Hellsehen?
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: Sa 02.12.06 23:17 
Hallo Andidreas,
wie so Sourcecode.
Wenn ich ein Memo (in meinem Fall vom Type TSynMemo) auf einem Form habe.
und dann nach Programmstart einen Text dort eingebe kann ich ihn auch mit den
üblichen TastenCodes bearbeiten. Darunter fällt auch das Entfernen von Textabschnitten
die ich mit der Maus Markiert habe.
Oder zum Text Kopieren, da klappt ja auch STRG+C und so funktioniert auch die
ENTF Taste um text zu löschen.
Das wäre ja als wenn ich mir ein Auto kaufe und mir dann einen Motor baue um damit zu fahren...
Andidreas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows XP Pro
BDS 2006
BeitragVerfasst: Sa 02.12.06 23:19 
Die frage ist doch wie machst Du das? So kann doch keiner sagen wo der Fehler ist.
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: Sa 02.12.06 23:41 
So erstelle ich eine Tab mit dem Memo drauf
globale Variablen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  FSynPhpEditor: TFSynPhpEditor;
  MyMemo: TSynMemo;
  SeitenNr: Byte;
  ts: TTabSheet;

Diese Procedur wir z.B. Beim Programmstart aufgerufen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
procedure TFSynPhpEditor.newTab();
begin
 Inc(SeitenNr);
  ts := TTabSheet.Create(PageControl1);
  with ts do
    begin
      PageControl := PageControl1;
      Name        := 'TS' + IntToStr(SeitenNr);
      Caption     := 'unbekannt'+ IntToStr(SeitenNr) +'.txt';
      PageControl.ActivePageIndex:=PageControl.PageCount-1;
    end;

    MyMemo        := TSynMemo.Create(Self);
    MyMemo.Align  := alClient;
    MyMemo.Name   := 'Memo_' + PageControl1.ActivePage.Name;
    MyMemo.Highlighter := SynPHPSyn1;
    MyMemo.Gutter.ShowLineNumbers:= FEinstellungen.CheckBox4.Checked;
    MyMemo.ActiveLineColor:= FEinstellungen.AdvColorSelector3.SelectedColor;
    MyMemo.Lines.Clear;
    MyMemo.Lines.Add('<?php');
    MyMemo.Lines.Add('');
    MyMemo.Lines.Add('?>');
    MyMemo.Parent := PageControl1.ActivePage;
end;


So lade ich dann eine Text zum Bearbeiten
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TFSynPhpEditor.FileOpen1Accept(Sender: TObject);
var filename:string;
begin
  newTab;
  TSynMemo(FindComponent('Memo_' + PageControl1.ActivePage.Name)).Lines.LoadFromFile(FileOpen1.Dialog.FileName);
  FileName := FileOpen1.Dialog.FileName;
  StatusBar1.Panels[0].Text := FileName;
  PageControl1.ActivePage.Caption:= ExtractFileName(FileName) ;
end;


So nun starte ich mein Programm und lade einen Text den ich bearbeiten möchte.
Markiere mit der Maus z.b. ein Wort und drücke die ENTF Taste und
der Tab samt Memo werden geschlossen.
Ich habe für die Tasten abfrage nicht programmiert.
Kein OnKeypres oder ähnliches.

Ich habe mir mal ein neues Programm erstellt wo nur ein TSynMemo drauf ist und
das Prog gestartet. (Vorher hab ich einen Text über das Eigenschaften Feld "LINES" eingefügt)
wenn ich jetzt ein Wort markiere und dann die ENTF Taste auf der Tastatur drücke wird
das Wort aus dem Text gelöscht und das Memo verschwindet nicht. So wie es ja auch in meinem
Programm seien soll.
Gruß Ingo
Andidreas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows XP Pro
BDS 2006
BeitragVerfasst: So 03.12.06 00:05 
Hab es soweit mal probiert und es gibt keine Probleme.
Mir stellt sich die Frage: FSynPhpEditor: TFSynPhpEditor; wo her ist das? Ich kann bei meinem SynEdit nichts dazu finden und hab es halt ohne getestet.
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: So 03.12.06 00:16 
Mein Form1 heißt nicht Form1 sondern FSynPhpEditor (F für Form und der Rest ist der Programmname)
hätte ich den Namen vom Form1 nicht geändert dann würde da
Form1: TForm1;
stehen.
Gruß Ingo
Andidreas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows XP Pro
BDS 2006
BeitragVerfasst: So 03.12.06 11:26 
Es läßt sich nicht nachvollziehen, wo dieser Fehler herkam. Es funktioniert so einwandfrei. Wenn es bei Dir nicht geht, versuch es doch mal mit der SynEdit-Komponente.
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: So 03.12.06 12:28 
Hmmm könnte ich machen.
Wo ist eigentlich der unterschied zwischen, SynEdit und SynMemo.
Konnte bis jetzt noch keinen feststellen.
Andidreas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows XP Pro
BDS 2006
BeitragVerfasst: So 03.12.06 13:00 
Kann ich Dir auch nicht sagen. Hab bis jetzt immer die SynEdit genommen. Du kannst auch beim laden der Datei with PageControl1.ActivePage do nehmen.
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: So 03.12.06 13:16 
user profile iconAndidreas hat folgendes geschrieben:
Du kannst auch beim laden der Datei with PageControl1.ActivePage do nehmen.

Kannst du mir das näher erläutern?
Ich habe doch nur eine Zeile wo ich PageControl.ActivePage nutze.
Andidreas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows XP Pro
BDS 2006
BeitragVerfasst: So 03.12.06 13:28 
Statt
ausblenden Quelltext
1:
  TSynMemo(FindComponent('Memo_' + PageControl1.ActivePage.Name)).Lines.LoadFromFile(FileOpen1.Dialog.FileName);					
eben
ausblenden Quelltext
1:
2:
 with PageControl1.ActivePage do
   MyMemo.Lines.LoadFromFile(...);

denn Du lädst doch bestimmt immer nur in eine aktive Memo.
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: So 03.12.06 13:44 
ich werde es mal ausprobieren.