AGB  ·  Datenschutz  ·  Impressum  







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

FindComonent(dynamisch)

Ein Thema von JB-1990 · begonnen am 8. Sep 2008 · letzter Beitrag vom 1. Dez 2008
Antwort Antwort
JB-1990

Registriert seit: 3. Okt 2007
56 Beiträge
 
#1

FindComonent(dynamisch)

  Alt 8. Sep 2008, 14:30
Bin gerade am schreiben eines Editors mit Tabs. Läuft auch alles ganz gut, bis auf einige Proceduren (der Hauptteil) die FindComponent erfordern. Hab das zwar schonmal gemacht, allerdings hatte ich damals meine Objekte nicht dynamisch erstellt, da immer die gleiche Anzahl benötigt wurde und ich noch weniger Ahnung von der Materie hatte.
In meinem Editor kann man sich, im Integerzahlenbereich, Seiten erstellen...d.h. nicht mehr als 2^16 diese werden aber logischer weiße nur erstellt, wenn der Nutzer es wünscht.
Wenn der Nutzer eine neue Seite erstellt, wird in der PageControl ein Tabsheet erstellt, welches wiederum ein Richeditfeld enthält.
Sobald ich mit FindComponent dieses anspreche kommt das:

Im Projekt Editor ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung:'Zugriffsverletzung bei Adresse 0045D638 in Modul 'Editor.exe'. Lesen von Adresse 00000248'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

Hier mein Befehl
Delphi-Quellcode:
IF SaveDialog1.Execute THEN BEGIN
   TRichEdit(FindComponent('RE'+IntToStr(PC.ActivePageIndex+1))).lines.SaveToFile(SaveDialog1.FileName);
  END;
SaveDialog liegt aufm Formular, weiß nicht mehr weiter.

danke im voraus.

LG JB-1990
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: FindComonent(dynamisch)

  Alt 8. Sep 2008, 14:45
Bist Du sicher, dass Du das RichEdit auf diese Weise finden kannst? Ich würde es mal so versuchen:
Delphi-Quellcode:
var RE: TRichEdit;
begin
  ...
  IF SaveDialog1.Execute THEN BEGIN
    RE := PC.Pages[PC.ActivePageIndex].FindComponent('RE'+IntToStr(PC.ActivePageIndex+1)) as TRichEdit;
    if Assigned(RE) then
      RE.lines.SaveToFile(SaveDialog1.FileName)
    else
      MessageBox(Handle,'Richedit nicht gefunden',nil,0);
  END;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
JB-1990

Registriert seit: 3. Okt 2007
56 Beiträge
 
#3

Re: FindComonent(dynamisch)

  Alt 8. Sep 2008, 19:54
sicher bin ich mir ni, aber hab das bis jetzt noch ni anders gemacht,deswegen dacht ich, dass das geht, aber da PC parent von TS und das wiederrum parent von RE is...werds mal probieren

PC.Pages[...] Is dann ein Zeiger auf die entsprechende Seite oder?

THX
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: FindComonent(dynamisch)

  Alt 8. Sep 2008, 19:56
Ja, das ist eine Referenz auf die Aktive (sichtbare) Seite
Markus Kinzler
  Mit Zitat antworten Zitat
JB-1990

Registriert seit: 3. Okt 2007
56 Beiträge
 
#5

Re: FindComonent(dynamisch)

  Alt 8. Sep 2008, 21:17
das mit dem speichern klappt jetzt, allerdings kommt immernoch eine EAccessViolation
kann es daran liegen, dass ich Delphi6 mit vista verwende?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: FindComonent(dynamisch)

  Alt 8. Sep 2008, 21:33
Spalte mal die den Befehl auf und schau es dir im Debugger an
Markus Kinzler
  Mit Zitat antworten Zitat
JB-1990

Registriert seit: 3. Okt 2007
56 Beiträge
 
#7

Re: FindComonent(dynamisch)

  Alt 9. Sep 2008, 20:31
inwiefern soll ich den Befehl spalten? is doch ein zusammenhängender oder wie meinste das?
  Mit Zitat antworten Zitat
JB-1990

Registriert seit: 3. Okt 2007
56 Beiträge
 
#8

Re: FindComonent(dynamisch)

  Alt 1. Dez 2008, 20:36
habs jetzt einfach über ne TList gelöst.
  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 11:42 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