AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi bezeichnernamen im quellcode dynamisch zusammenbauen?
Thema durchsuchen
Ansicht
Themen-Optionen

bezeichnernamen im quellcode dynamisch zusammenbauen?

Ein Thema von ltmick · begonnen am 1. Jun 2008 · letzter Beitrag vom 1. Jun 2008
Antwort Antwort
ltmick

Registriert seit: 31. Dez 2004
7 Beiträge
 
#1

bezeichnernamen im quellcode dynamisch zusammenbauen?

  Alt 1. Jun 2008, 11:56
hallo zusammen,

ich habe eine kleine delphi-frage, vllt. weiss jmd. weiter. folgender code gegeben:

Delphi-Quellcode:
  if Std div 32 = 0 then ShpStd32Akt.Brush.Color := FarbeInaktiv
    else begin
      ShpStd32Akt.Brush.Color := FarbeAktiv;
      Std := Std - 32;
    end;
  if Std div 16 = 0 then ShpStd16Akt.Brush.Color := FarbeInaktiv
    else begin
      ShpStd16Akt.Brush.Color := FarbeAktiv;
      Std := Std - 16;
    end;
  if Std div 8 = 0 then ShpStd8Akt.Brush.Color := FarbeInaktiv
    else begin
      ShpStd8Akt.Brush.Color := FarbeAktiv;
      Std := Std - 8;
    end;
  if Std div 4 = 0 then ShpStd4Akt.Brush.Color := FarbeInaktiv
    else begin
      ShpStd4Akt.Brush.Color := FarbeAktiv;
      Std := Std - 4;
    end;
  if Std div 2 = 0 then ShpStd2Akt.Brush.Color := FarbeInaktiv
    else begin
      ShpStd2Akt.Brush.Color := FarbeAktiv;
      Std := Std - 2;
    end;
  if Std div 1 = 0 then ShpStd1Akt.Brush.Color := FarbeInaktiv
    else begin
      ShpStd1Akt.Brush.Color := FarbeAktiv;
      Std := Std - 1;
    end;
es geht um die darstellung einer binaeruhr. die shapes sind die "lichter". mit den if-anweisungen rechne ich aus, welche lichter "brennen" sollen und welche nicht. wie man siehst, ist das viel aehnlicher code. hinzu kommt, dass ich das gleiche ja nochmal fuer die minuten und sekunden mache. das sieht ineffizient aus. kann ich das in einer art schleife oder in einer separaten prozedur auslagern? das waere schoen. es gibt nur ein problem: die bezeichnernamen fuer die shapes sind jedes mal andere: ShpStd32Akt.Brush, ShpStd16Akt.Brush, ShpStd8Akt.Brush, ... kurzum:

kann ich in delphi einen bezeichnernamen --> im quellcode <-- durch eine variable dynamisch ergaenzen? z.b.:

ShpStdXAkt.Brush
und fuer X wird dann mit jedem z.b. prozeduraufruf ein individueller wert eingesetzt.


besten dank im voraus,
ltmick.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: bezeichnernamen im quellcode dynamisch zusammenbauen?

  Alt 1. Jun 2008, 12:08
Hallo,

kannst Du ShpStd nicht in ein Array packen?
An Position 0 ShpStd1 = 2^0
An Position 1 ShpStd2 = 2^1
An Position 2 ShpStd4 = 2^2
...

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: bezeichnernamen im quellcode dynamisch zusammenbauen?

  Alt 1. Jun 2008, 12:13
Moin ltmick,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Die Shapes könntest Du einfach mit einem Hier im Forum suchenFindComponent finden, können.
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
ltmick

Registriert seit: 31. Dez 2004
7 Beiträge
 
#4

Re: bezeichnernamen im quellcode dynamisch zusammenbauen?

  Alt 1. Jun 2008, 12:42
beides schoene loesungen - danke, ihr habt mir sehr geholfen!

ciao,
ltmick.
  Mit Zitat antworten Zitat
ltmick

Registriert seit: 31. Dez 2004
7 Beiträge
 
#5

Re: bezeichnernamen im quellcode dynamisch zusammenbauen?

  Alt 1. Jun 2008, 14:04
hm, dann haette ich jetzt jedoch noch eine ergaenzungsfrage:

Delphi-Quellcode:
procedure TForm1.ShpStd32ProgMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if ShpStd32Prog.Brush.Color = FarbeInaktiv then ShpStd32Prog.Brush.Color := FarbeAktiv
    else ShpStd32Prog.Brush.Color := FarbeInaktiv;
end;

{ **************************************************************************** }

procedure TForm1.ShpStd16ProgMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if ShpStd16Prog.Brush.Color = FarbeInaktiv then ShpStd16Prog.Brush.Color := FarbeAktiv
    else ShpStd16Prog.Brush.Color := FarbeInaktiv;
end;

...
habe also meine sagen wir mal 16 shapes. immer, wenn eines angeklickt wird, soll sich die farbe aendern (in FarbeAktiv oder FarbeInaktiv (konstanten) - je nach vorigem status). soweit, so gut. aber wieder viel code, oben sind ja nur 2 beispiele als ausschnitt.

es waere schoen, wenn ich bei jedem klick auf ein shape auf die selbe ereignismethode verweisen koennte im objektinspektor. dazu muesste aber im code der bezeichnername der jeweiligen shape-komponente, die ich angeklickt habe, ausgelesen werden, damit die richtige shape ihre farbe aendert.

also: wie kann man beim klick auf eine komponente ihren eigenen namen als string auslesen? und das auch, wenn ich beim klick auf verschiedene shapes auf stets ein und dieselbe ereignismethode verweise?
moechte es mit findcomponent loesen, wenn moeglch. ist die loesung irgendetwas mit "self"? kenne mich nicht genug aus.

danke erneut im voraus,

ciao,
ltmick.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: bezeichnernamen im quellcode dynamisch zusammenbauen?

  Alt 1. Jun 2008, 14:10
Moin ltmick,

Sender ist schon die gewünschte Komponente.
So müsste es gehen:

Delphi-Quellcode:
procedure TForm1.ShpStd32ProgMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

const
  _aclFarben : array [boolean] of TColor = (FarbeInaktiv,FarbeAktiv);

begin
  (Sender as TShape).Brush.Color := _aclFarben[(Sender as TShape).Brush.Color = FarbeInaktiv];
end;
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
ltmick

Registriert seit: 31. Dez 2004
7 Beiträge
 
#7

Re: bezeichnernamen im quellcode dynamisch zusammenbauen?

  Alt 1. Jun 2008, 17:18
wunderbar - schon wieder eine schnelle loesung. danke!

ciao,
ltmick.
  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 01:20 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