AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Inhalt eines dynamisch erstellen Richedits drucken
Thema durchsuchen
Ansicht
Themen-Optionen

Inhalt eines dynamisch erstellen Richedits drucken

Ein Thema von Brakeman · begonnen am 9. Aug 2007 · letzter Beitrag vom 9. Aug 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Inhalt eines dynamisch erstellen Richedits drucken

  Alt 9. Aug 2007, 12:04
Hi,

geht es so?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

  procedure FindControl(WinContr: TWinControl);
  var
    i : integer;
  begin
    for i:= 0 to WinContr.ControlCount- 1 do
    begin
      if WinContr.Controls[i] is TRichEdit then
        showmessage(TRichEdit(WinContr.Controls[i]).Name);//TRichEdit(WinContr.Controls[i]).Print('Hallo');
      if WinContr.Controls[i] is TWinControl then
        FindControl(TWinControl(WinContr.Controls[i]));
    end;
  end;

begin
  FindControl(pagecontrol1.ActivePage);
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Brakeman

Registriert seit: 23. Sep 2003
43 Beiträge
 
#12

Re: Inhalt eines dynamisch erstellen Richedits drucken

  Alt 9. Aug 2007, 12:14
Hallo bitsetter,
danke für die Antwort. Ich denke aber nicht, dass es so geht. Ich habe mehrere Richedits somit will ich eigentlich den Weg über das aktive PageControl-Element gehen. Den Namen des Elements habe ich schon. Nur weiss ich nicht, wie ich auf den Text im Richedit zufreigen kann. Dabei erhalte ich leider momentan noch eine Fehlermeldung. Ich versuche es so:

TRichEdit (PageControl1.FindComponent(activePage)).print('Hallo'); leider ohne Erfolg.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Inhalt eines dynamisch erstellen Richedits drucken

  Alt 9. Aug 2007, 12:23
Zitat von Brakeman:
Hallo bitsetter,
danke für die Antwort. Ich denke aber nicht, dass es so geht. Ich habe mehrere Richedits somit will ich eigentlich den Weg über das aktive PageControl-Element gehen.
Zitat von bitsetter:
Delphi-Quellcode:
...
  FindControl(pagecontrol1.ActivePage);
end;
Ja und, das mache ich doch auch. Naja wenigstens funktioniert es bei mir.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Brakeman

Registriert seit: 23. Sep 2003
43 Beiträge
 
#14

Re: Inhalt eines dynamisch erstellen Richedits drucken

  Alt 9. Aug 2007, 12:36
Vielleicht habe ich mich auch falsch ausgedrückt. Den Namen des aktiven Tabsheets und somit auch Richedits kenne ich bereits. Nun will ich auf das Richedit zugreifen. Dazu habe ich den Rat von Apollonius befolgt und versucht mit

TRichEdit (PageControl1.FindComponent(activePage)).print('Hallo'); über Cast nach TRichEdit zu drucken. Es scheint noch ein Fehler beim Casten zu sein. Sieht den jemand?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Inhalt eines dynamisch erstellen Richedits drucken

  Alt 9. Aug 2007, 12:41
Wäre es nicht das sinnvollste die erstellten Richedits in einer Liste oder einem Array zu speichern? Damit könnte man sie auch wieder freigeben (ohne sich darauf zu verlassen das der Owner das macht) und man könnte sie über den Index ansprechen. Ist der aktive Index des Pagecontrols dann zum Beispiel 0 brauchst du einfach nur RichEditArray[0] ansprechen.

Ich bin der Meinung FindComponent sollte man nur einsetzen wenn es ohne suche nicht geht. Ansonsten ist es unglücklich programmiert und eine Verschwendung von Ressourcen.
Im realen Leben wirft ja auch keiner seinen Autoschlüssel nach hinten über die Schulter irgendwo hinn um ihn später zu suchen. Da legt man den Autoschlüssel auch dort hinn wo man ihn später nicht suchen braucht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Inhalt eines dynamisch erstellen Richedits drucken

  Alt 9. Aug 2007, 13:08
Ansonsten könntest du beim dynamischen Erstellen des TRichedit den TabSheed.Tag den Pointer übergeben.
Delphi-Quellcode:
     for r := 1 to s do
      begin
       TabSheet := TTabSheet.Create(PageControl1);
       with TabSheet do
        begin
         PageControl := PageControl1;
         Name := 'ts' + IntToStr(r);
         Caption := testStands[r-1];
         RichEdit := TRichEdit.Create(TabSheet);
         RichEdit.Name:='re'+IntToStr(r);
         RichEdit.Parent := TabSheet;
         TabSheet.Tag:= Cardinal(RichEdit);//<--
...
Und auslesen kannst du ihn so:Caption:= TRichEdit(Pointer(pagecontrol1.ActivePage.Tag)).Name;//Print
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
iGoA

Registriert seit: 9. Jul 2007
69 Beiträge
 
#17

Re: Inhalt eines dynamisch erstellen Richedits drucken

  Alt 9. Aug 2007, 13:34
Zitat von Brakeman:
Vielleicht habe ich mich auch falsch ausgedrückt. Den Namen des aktiven Tabsheets und somit auch Richedits kenne ich bereits. Nun will ich auf das Richedit zugreifen. Dazu habe ich den Rat von Apollonius befolgt und versucht mit

TRichEdit (PageControl1.FindComponent(activePage)).print('Hallo'); über Cast nach TRichEdit zu drucken. Es scheint noch ein Fehler beim Casten zu sein. Sieht den jemand?
Ja, Du suchst per FindComponent nach dem Namen des Tabsheets, willst da Tabsheet dann aber in ein RichEdit "Verwandeln". Du müsstest nach dem Namem "re" + {nummer der aktuellen seite} suchen lassen.

Hast Du meinen Vorschlag mal ausprobiert? Der sollte doch genau das machen. (Man muss nur hinten beim print noch den Parameter einfügen. Das hatte ich vergessen)

PS: Der letzte Vorschlag von bitsetter ist auch cool. Spart Performance.
  Mit Zitat antworten Zitat
Brakeman

Registriert seit: 23. Sep 2003
43 Beiträge
 
#18

Re: Inhalt eines dynamisch erstellen Richedits drucken

  Alt 9. Aug 2007, 13:38
Vielen Dank für die Hinweise. Ich habe nun jedoch eine etwas andere Lösung gewählt. Die ist zwar sicher nicht die schönste aber ich habs zumindest hinbekommen.

1. Ich kenne den Namen des aktiven Richedits (da dieser gleich ist mit dem Tabsheet).
2. Die jeweiligen Inhalte der Richedits befinden sich in Textdatein mit dem Namen des Tabsheets (Tabsheet1.txt usw.)
3. Die Procedure ButtonDrucken.Click() lädt die zum aktiven Tabsheet gehörende Textdatei in ein unsichtbares statisches Richedit (Richedit3).
4. Dieses Richedit wird dann gedruckt mit RichEdit3.print.

Ich weiss, dass es sicher elegantere Lösungen gibt. Aber das Programm muss morgen fertig sein und ich hab gleich Feierabend.

Ihr habt mir aber trotzdem geholfen und man lernt jedesmal ein bisschen was dazu.

Grüße aus Leipzig!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 15:30 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