AGB  ·  Datenschutz  ·  Impressum  







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

Form Elemente in neuer Unit verwenden

Ein Thema von knuff · begonnen am 8. Mär 2012 · letzter Beitrag vom 20. Aug 2012
Antwort Antwort
knuff

Registriert seit: 8. Mär 2012
1 Beiträge
 
#1

Form Elemente in neuer Unit verwenden

  Alt 8. Mär 2012, 16:25
Hallo zusammen,

ich habe folgendes Problem. ich habe ein Programm gebastelt mit einer Unit1 und einem Form1 also eben eine ganze einfache formular anwendung. so nun habe ich eine neue unit geschrieben, da ich in dieser eine größere procedure auslagern wollte.

diese unit habe ich zuvor unabhängig vom eigenen programm gebastelt mit eigenem test form und so. nun nachdem die neue procedure in der neuen unit einwandfrei und wie gewünscht funktionierte (also hier is grundsätzlich kein Problem), habe ich das testform "weggeworfen" und habe (wollte ich zumindest aber hier hakt es^^) die neue unit in das bestehende programm hinzugefügt.

also zum verständnis. ich habe nun unit1 und form1 vom ursprünglichen programm und dazu nun die neue unit eingebunden. nun soll aus der neuen unit die procedure in der unit 1 aufgerufen werden, also habe ich die neue unit in unit1 unter interface>uses bekannt gemacht. außerdem habe ich in der neuen unit die procedure öffentlich deklariert.

nun zum problem: der procedur aufruf in unit1 klappt ohne probleme, allerdings wird vom compiler nun in der neuen unit gemeckert. ich nutze in der neuen unit memos und editfelder die ursprünglich ihren bezug auf das testform hatten, das nun nicht mehr existiert. genau diese editfelder sitzen nun aber auch auf dem form des hauptprogrammes mit glecher bezeichnung und alles, aber sie sind in der neuen unit nicht bekannt (undefinierter bezeichner).

ich habe schon selbst versucht nach dem fehler zu suchen und dachte mir vielleicht müssen die felder in der neuen unit explizit bekannt gemacht werden und somit habe ich etwas im kopf der unit gestöbert. die felder sind in der neuen unit unter "type" eingetragen sowie auch TForm1, außerdem befindet sich ein TForm1 eintrag unter "var" im kopf.

mein laien verständnis sagt mir nun die neue unit müsste doch die felder kennen???? ich habe herausgefunden, dass wenn ich in der neuen unit die felder über "form1.edit1...." aufrufe dann geht es, aber ich möchte gerne das die felder bekannt sind und das ich sie direkt aufrufen kann.

ist nun vielleicht nicht so wichtig und im grunde habe ich ja eine problemlösung. allerdings möchte ich als anfänger nicht immer um die probleme drum herum basteln, denn so versteh ich es ja sonst nie.

also wie schaff ich es das ich die felder von Form1 und in der neu hinzugefügten unit aufrufen kann ohne das ich "Form1.edit1.xxx" benutzen muss, sondern einfach nur "edit1.xxx"???

ich bin über jede hilfe dankbar!

edit: nun nachdem ich alle felder mit "Form1.xxx" aufgerufen, um das Programm vorerstlauffähig zu machen solange ich auf eure netten antworten warte kommen nun folgende fehler mit denen ich absolut nichts anfangen kann:

Erzeugen
[Fehler] WARNING. Duplicate resource(s):
[Fehler] Type 10 (RCDATA), ID TFORM1:
[Fehler] File Unit1.dfm resource kept; file p_emailsenden.dfm resource discarded.


Bitte Hilfe!

gruß
knuff

Geändert von knuff ( 8. Mär 2012 um 16:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Form Elemente in neuer Unit verwenden

  Alt 8. Mär 2012, 17:04
Erstens:
Wenn du Code auslagerst, sollte dieser auch gleich unabhängig von den konkreten visuellen Komponenten arbeiten. Sprich du übergibst alles notwendige und bekommst die Ergebnisse zurück (ggf. auch als Eigenschaften einer Klasse).

Zweitens:
Wenn in dem Code doch mit visuellen Komponenten gearbeitet werden muss, übergib Referenzen auf diese Objekte an den Code.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
-=ZGD=-

Registriert seit: 25. Apr 2006
Ort: Bad Aibling
105 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Form Elemente in neuer Unit verwenden

  Alt 20. Aug 2012, 14:36
Den gleichen Fehlertyp hatte ich auch gerade.
Ich habe eine Form unter einem neuen Namen gespeichert und so im Projekt verwendet.
Programm war, dass in der *.dfm oben als Bezeichnung für beide Formulare der selbe Wert drinsteht.

Mein Workaround war:

Beide DFMs im Notepad geöffnet, dort nach Unterschieden bzw. fehlerhaften Übereinstimmungen gesucht und gleich in Zeile 1 fündig geworden.
Bei mir stand in beiden DFMs
Code:
object form_product_category: Tform_product_category
.
Einfach die entsprechende DFM auf
Code:
object form_document_category: Tform_document_category
angepasst, gespeichert, Projekt beendet, Ressourcendatei gelöscht (*.res), Projekt neu geöffnet, compiliert und schon geht´s.

Grüße,
Stefan
Stefan Michalk
  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 00:14 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