AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem: SynEdit + PageControl

Ein Thema von Störtebeker · begonnen am 21. Sep 2009 · letzter Beitrag vom 29. Sep 2009
Antwort Antwort
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#1

Problem: SynEdit + PageControl

  Alt 21. Sep 2009, 21:22
Hi,

ich möchte meinem Editor das Anzeigen mehrerer Datein ermöglichen. Dazu verwende ich ein PageControl. Das mit dem Hinzufügen der Reiter funktioniert schon einmal. Probleme habe ich jetzt mit dem SynEdit. Beim Programmstart ist ein SynEdit offen. Da schreibe ich jetzt zum Beispiel Text rein und erstelle dann über meinen Menüpunkt "NEU" eine neue Page. Was jetzt auftritt ist, dass auf dem neu erstellten Reiter der gleiche Text im SynEdit steht, wie im Reiter davor. Und wenn ich zwischen den beiden Reitern hin und her wechsle, habe ich das Gefühl, dass ich nur die Reiter ändere, jedoch nicht das SynEdit. Der folgende Code müsste doch eigentlich meinem Wunsch entsprechen, über den Menüpunkt "NEU" eine neue Seite zu erstellen, mit einem neuen, leeren SynEdit.
Doch das passiert leider nicht. Wäre froh, wenn jemand von euch Rat wüsste.

Delphi-Quellcode:
procedure TForm1.MenuItem27Click(Sender: TObject);
  var
  ts : TTabsheet;
  se: TSynEdit;
begin
  i:=i+1;
  ts := TTabsheet.Create(Self);
  ts.PageControl := PageControl4;
  ts.Parent := PageControl4;
  se:= TSynEdit.Create(Self);
  se.Parent := ts;
  ts.Caption := 'New Document '+IntToStr(i);
  ts.PageControl.ActivePage := ts.PageControl.Pages[i];
end;
MfG
Störtebeker
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Problem: SynEdit + PageControl

  Alt 22. Sep 2009, 05:50
Unter Delphi funktioniert der Code ohne Probleme. Muss wohl an Lazarus liegen.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: Problem: SynEdit + PageControl

  Alt 22. Sep 2009, 06:11
Vielleicht hilft das:
Delphi-Quellcode:
ts := TTabsheet.Create(PageControl4);
se:= TSynEdit.Create(ts);
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#4

Re: Problem: SynEdit + PageControl

  Alt 22. Sep 2009, 06:40
Ne, hilft leider nicht. Der Effekt bleibt der gleiche.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Problem: SynEdit + PageControl

  Alt 22. Sep 2009, 08:18
Hey Störtebeker,

war auch mal vor dem problem aber ich hab das mit Tabsets gemacht aber das ist ja fast gleiche
ich habe ein Synedit komponente und der text wird in einem Array gespeichert (erstmal statisch wollte das noch umschreiben auf dynamisch).
Hier erst mal meine Proceduren:
Delphi-Quellcode:
function TabSyneditSave(text:string;tabposition,cursorposition:integer):boolean;
begin
result:=false;
tabsave[tabposition,1]:=text;
tabsave[tabposition,2]:=InttoStr(cursorposition);
end;
procedure TabSyneditLoad(tabposition:integer; var text:string; var cursorposition:integer);
begin
text:=tabsave[tabposition,1];
cursorposition:=strtoint(tabsave[tabposition,2]);
end;

procedure TabSyneditManager(text:string;tabposition,cursorposition:integer; var newtext:string; var newcursorposition:integer);
begin
TabSyneditSave(text,systems[1],cursorposition);
TabSyneditLoad(tabposition,newtext,newcursorposition);
systems[1]:=tabposition;
end;
Die TabSyneditManager ist immer dann notwendig wenn du in deinem Tabs herumblätterst das (Click procedure).
Wenn du eine neuen Tab öffnest einfach zu erst den TabSyneditSave und dann neuen Tab und einfach Synedit.clear. fertig.
so hab ich das gemacht und es funktioniert auch bei mehr als 100000 zeilen noch ein man frei (hab das getestet und es geht auch noch mit mehr 100000) weil ich die befürchtung hatte das das zulange dauert aber es dauert überhabt nicht lang (ein mal schnipsen fertig)
ich hofe das dir das weiter hilft

MfG chefx
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#6

Re: Problem: SynEdit + PageControl

  Alt 22. Sep 2009, 15:59
Danke für eure Antworten.

Nach unzähligen Versuchen habe ich mir einfach mal das Treeview des Objektinspektors näher angeschaut und festgestellt, dass das SynEdit nicht auf einem Tab des PageControls lag, sondern auf dem PageControl selber und somit wahrscheinlich immer im Vordergrund lag, was halt dazu führte, dass die neu erstellten SynEdits hinter dem anfänglichen SynEdit verschwunden sind, und somit nicht sichtbar waren. Nachdem ich das SynEdit nun auf das Tab gezogen habe, funktioniert auch mein Code, den ich zu anfang gepostet habe. Manchmal ist die Lösung des Rätsels einfacher als man denkt. Wusste ich doch, dass der Code von Lazarus nicht soweit entfernt von dem von Delphi sein kann, da es sich ja bei Lazarus um - wie soll man es nennen - einen leicht abgespeckten Klon handelt, oder.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#7

Re: Problem: SynEdit + PageControl

  Alt 29. Sep 2009, 14:27
Ok, das mit dem Erstellen klappt wunderbar. Jetz möchte ich die Tabs natürlich auch schließen können.

Probiert habe ich es mit:
Form1.PageControl4.ActivePage.Destroy; Hat auch funktioniert. Nur wenn ich dann ein neuen Tab erstellen möchte, wirft mir Lazarus eine Exception mit der Meldung:
Zitat:
Project raised exception class: External: SIGFPE
Dann habe ich es folgendermaßen probiert:
Form1.PageControl4.ActivePage.Free; Jedoch mit dem selben Effekt. Ich kann nach Programmstart ein Tab erstellen, es schließen und wenn ich dann wieder ein Tab erstellen möchte, wird die Exception geworfen.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz