AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

Ein Thema von majornudelholz · begonnen am 27. Jun 2016 · letzter Beitrag vom 28. Jun 2016
Antwort Antwort
Benutzerbild von majornudelholz
majornudelholz

Registriert seit: 22. Nov 2015
15 Beiträge
 
Delphi XE7 Professional
 
#1

Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

  Alt 27. Jun 2016, 21:33
Hallo!

Ich habe mal wieder ein Problem... und zwar weiß ich nicht, wie ich auf ein Object(TButton) mittels FindComponent aus einer anderen Unit zugreifen kann.
Hier eine Idee von mir, die soweit keine Fehlermeldungen liefert, bis auf das Delphi TButton nicht erkennt, doch weiß ich nicht, wie ich dieses Problem lösen soll.

USpiel (Unit2) Kopf:
Delphi-Quellcode:
unit USpiel;

interface

uses Vcl.Dialogs, Classes, SysUtils, Forms;

type TLevel = 1..16;
type TZufallszahlen = 1..4;
type TSpiel = class(TComponent)
  private
    byLevel : TLevel;
    byFragenNr : Integer;
  public
    constructor Create;
    destructor Destroy;
    procedure FragenHolen(Level:Integer; Form: TForm);
    procedure IncLevel;
    procedure Optisch(Ereignis: Integer);
    function LevelHolen() : Integer;
    function AntwortRichtig(BAntwort: string) : Boolean;
end;
Prozedur in USpiel (Unit2):
Delphi-Quellcode:
procedure TSpiel.FragenHolen(Level:Integer; Form :TForm);
  var FragenAnzahl, LineAnzahl, FragenLine, LineNr, I, c : Integer;
      MngZufallszahlen : Set of TZufallszahlen;
      Zufallszahl : TZufallszahlen;
      sl : TStringList;
  begin
    [ ...... ] //ausgelassen
            c := 0;
            while (c < 5) do
              begin
                Zufallszahl := Random(4)+1;
                if not (Zufallszahl in MngZufallszahlen) then
                  begin
                    MngZufallszahlen := MngZufallszahlen + [Zufallszahl];
                    inc(c);
                    TButton(Form.FindComponent('AntwortButton'+ IntToStr(c))) := sl[Fragenline + Zufallszahl];
                  end
              end;
          finally
            sl.free;
          end;
      end
  else
    Optisch(2);
  end;

Mein Problem liegt hier:

TButton(Form.FindComponent('AntwortButton'+ IntToStr(c))) := sl[Fragenline + Zufallszahl]; Meine Frage ist also: Wie schaffe ich es, dass TButton erkannt wird? Wenn ich UHaupt(Unit1) in die Uses schreibe, treten Probleme mit der Erkennung von Methoden aus Unit2 (USpiel) auf...
Hat einer eine Idee? Bin für jeden Gedankenanstoß dankbar

MfG
MajorNudelholz
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.205 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

  Alt 27. Jun 2016, 23:02
TButton(Form.FindComponent('AntwortButton'+ IntToStr(c))) := sl[Fragenline + Zufallszahl]; Was soll das überhaupt werden? Du weißt einem Objekt, der Schaltfläche in diesem Fall, ein Item aus einer StringListe zu?

Erklär mal, was du eigentlich machen willst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von majornudelholz
majornudelholz

Registriert seit: 22. Nov 2015
15 Beiträge
 
Delphi XE7 Professional
 
#3

AW: Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

  Alt 28. Jun 2016, 07:22
Achso, ja oke, mir fällt Grade auf, dass ich im Laufe des Probierens das ".Caption" vergessen habe. Das hat aber trotzdem nicht funktioniert.

Zu dem, was ich machen will:
Ich möchte WWM programmieren. Dabei soll den die Fragen aus einer .txt ausgelesen. Es gibt für jedes Level eine eigene .txt, mit anderen Fragen und Antworten natürlich. Je in FragenBlock steht in 5 Zeilen untereinander. Ich möchte natürlixh, dass sich die Antwortmöglichkeiten auf den Button (über Caption) immer zufällig verändern. Mein Problem, dass ich derzeit habe ist, dass ich es nichttp hinkriege, diese Antwortmöglichkeit dem Caption des Buttons in der anderen Unit zu überführen. Es funktioniert wirklich alles bisher nur eben TButton wird mir als undeklarierter Bezeichner angegeben. Hat einer eine Idee? Ggf. Stelle ich auch nochmal beide Units hoch, falls das hilft?


TButton (Form.FindComponent('AntwortButton'+ IntToStr(c))).Caption := sl[Fragenline + Zufallszahl];
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock
Online

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.272 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

  Alt 28. Jun 2016, 07:55
Mach es Dir doch ein bisschen einfacher: In der Unit, die die Buttons kennt, veröffentlichst du eine Methode, die als Argument die Liste der Antworten annimmt, und dann wiederrum die Buttons so befüllt, wie Du es gerne hättest. Du solltest Dann auch nicht unbedingt mit FindComponent hantieren müssen, Du kennst ja die Buttons schließlich.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.205 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

  Alt 28. Jun 2016, 09:09
nur eben TButton wird mir als undeklarierter Bezeichner angegeben.
Vielleicht mal in die Hilfe gucke, in welcher Unit die Komponente enthalten ist?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von majornudelholz
majornudelholz

Registriert seit: 22. Nov 2015
15 Beiträge
 
Delphi XE7 Professional
 
#6

AW: Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

  Alt 28. Jun 2016, 18:47
Mach es Dir doch ein bisschen einfacher: In der Unit, die die Buttons kennt, veröffentlichst du eine Methode, die als Argument die Liste der Antworten annimmt, und dann wiederrum die Buttons so befüllt, wie Du es gerne hättest. Du solltest Dann auch nicht unbedingt mit FindComponent hantieren müssen, Du kennst ja die Buttons schließlich.

Sherlock
Das ist auch eine Idee, doch weiß ich nicht, wie ich diese Methode dann in meiner 2. Unit aufrufen soll, da sonst Unit1 Unit2 aufruft und umgekehrt...
  Mit Zitat antworten Zitat
Benutzerbild von majornudelholz
majornudelholz

Registriert seit: 22. Nov 2015
15 Beiträge
 
Delphi XE7 Professional
 
#7

AW: Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

  Alt 28. Jun 2016, 18:47
nur eben TButton wird mir als undeklarierter Bezeichner angegeben.
Vielleicht mal in die Hilfe gucke, in welcher Unit die Komponente enthalten ist?
Wo soll ich da gucken, ich finde nichts
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

  Alt 28. Jun 2016, 20:39
nur eben TButton wird mir als undeklarierter Bezeichner angegeben.
Vielleicht mal in die Hilfe gucke, in welcher Unit die Komponente enthalten ist?
Wo soll ich da gucken, ich finde nichts
Online-Hilfe -> da -> Delphi-Referenz durchsuchenVcl.StdCtrls.TButton <- nein, zu weit
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.205 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Mit TButton über FindComponent auf Objekt in anderer Unit zugreifen

  Alt 28. Jun 2016, 20:46
Cursor auf TButton und dann F1?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf