AGB  ·  Datenschutz  ·  Impressum  







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

dynamische Komponenten

Ein Thema von Privateer3000 · begonnen am 22. Dez 2002 · letzter Beitrag vom 27. Dez 2002
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#21
  Alt 23. Dez 2002, 15:16
nein
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#22
  Alt 23. Dez 2002, 15:54
probier mal das zu verstehen, und eventuell anzupassen:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure LabelClick(Sender: Tobject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  DeineLabel: array of TLabel;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
i := succ(High(DeineLabel));
SetLength(DeineLabel,i + 1); //Der array mit deinen Labeln wird eins länger
DeineLabel[i] := TLabel.Create(Form1); //In den grade erschaffenen Platz kommt ein Label
DeineLabel[i].Left := 10; //Wohin
DeineLabel[i].Top := i * 20; //Wohin
DeineLabel[i].Color := clred; //Farbe
DeineLabel[i].OnClick := LabelClick; //Was ist, wenn man klickt
insertcontrol(DeineLabel[i]); //Label "wirklich" erstellen
end;

procedure TForm1.LabelClick(Sender: TObject);
begin
if Sender = DeineLabel[0] {irgendeine Zahl statt 0} then
  {was bei dem Label passieren soll} Form1.Close;
end;

end.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#23
  Alt 23. Dez 2002, 18:23
Und noch eine kurze Erklärung zu
Zitat:
insertcontrol(DeineLabel[i]);
Diese Zeile entspricht dieser:
DeineLabel[i].Parent := Self;
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#24
  Alt 23. Dez 2002, 22:09
@Nailor

in deinem Beispiel,ich blick offengesagt noch nicht ganz durch.
Wieviele Labels werden in diesem Beispiel denn erstellt.Das kann ich darin nicht sehen.Oder ist dein arraynur angedeudet?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#25
  Alt 23. Dez 2002, 22:11
Bei Nailors Beispiel werden so viele Labels erzeugt wie du auf den Button Button1 klickst.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#26
  Alt 23. Dez 2002, 22:46
jbg meint, dass jedesMal, wenn man auf den Button klickt, ein neues Label entsteht. Du kannst auch den Code 1:1 ausschneiden, bei Delphi ein neues Projekt starten, einen einzigen Button einfügen und das Programm starten. Dann kannst du sehen, was es macht.
Dann kannst du ein paar Werte ändern, und per Trial and Error dir ein paar Auswirkungen klar machen.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#27
  Alt 24. Dez 2002, 06:25
gehts das nicht einfacher?
Jedem Label einfach einen Namen verpassen wie
einen Startwert festlegen dann jeweils um 1 hochzählen?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.106 Beiträge
 
Delphi 11 Alexandria
 
#28
  Alt 24. Dez 2002, 10:18
Moin Privateer,

wenn Du den Labeln beim Erzeugen keinen Namen zuweist, wird der Standardname erzeugt, also eben Label1, Label2 usw., nur lassen sie sich über ein Array of TLabel leichter ansprechen.
Sonst müsstest Du sie immer mit FindComponent suchen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#29
  Alt 24. Dez 2002, 15:47
Hi Chris,

das werden sie sowieso in jedem Fall.Jedenfalls in diesem Programm.
Beispiel:
Code:
procedure TForm1.AnyInChange(Sender: TObject);
var
  bEdit: TEdit;
  cLabel: TLabel;
  begin
  if Sender <> nil then
    if Sender is TEdit then
    begin
      bEdit := FindComponent('in' + Copy(TEdit(Sender).Name, 3, 2)) as TEdit;
      cLabel := Form2.FindComponent('out' + Copy(TEdit(Sender).Name,3,2)) as TLabel;
      cLabel.Caption:=bEdit.Text;
      end;
      end;
So und so ähnlich werden sie im kompletten Programm angesprochen.Deswegen meine Vermutung ob es nicht einfacher ginge.
Ich konnte es nur nicht nachvollziehen, ob jedes Label den richtigen Namen bekommt, weil es man nicht sieht.
Denn alles "Findcomponents" sind auf eine bestimmte Zahl abgestimmt.Will sagen egal wie die Komponenten heissen haben sie die gleich Zahl, die die ich ansprechen will.

Einen geruhsamen heiligen Abend an alle!
(Werd noch a bisserl rumprobieren ) )
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.106 Beiträge
 
Delphi 11 Alexandria
 
#30
  Alt 24. Dez 2002, 16:30
Moin Privateer,

nimm doch lieber die Array Variante.
Das dürfe deutlich einfacher gehen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 20:40 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