AGB  ·  Datenschutz  ·  Impressum  







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

function für mehrere Units?

Ein Thema von Borschti · begonnen am 3. Mär 2008 · letzter Beitrag vom 4. Mär 2008
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#21

Re: function für mehrere Units?

  Alt 4. Mär 2008, 10:03
Test wird bei euch 3 mal deklariert, obwohl ihr wahrscheinlich nur 1 nutzen wollt.
Jonas
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#22

Re: function für mehrere Units?

  Alt 4. Mär 2008, 10:52
keiner eine ahnung ?

also wir haben uns gedacht das es möglich wäre das aktuelle form zu aktivieren statt form13 zu benutzen nur wissen wir den Befehl dafür nicht vielleicht kennt den ja jemand von euch wir welzen uns grade durch bücher.
Was wir erreichen wollen: auf jedem Konfigurationsformular ist das Edit5 feld gleich und dient zum einlesen des spalten namens. Wenn wir nun also diesen String immer aus dem aktuellen Editfeld einlesen fallen viele anweisungen weg
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#23

Re: function für mehrere Units?

  Alt 4. Mär 2008, 11:04
Die Frgaber verstehe ich nicht so ganz...

Wenn man von einer anderen Form /unit zugreifen kann man das so machen
1.) procedure-kopf in den Public-abschnitt reinschreiben, z.b. procedure Bla;
2.) vor die procedure im implemnatation-Teil den Klassennamen schreiben, z.b. procedure TForm1.Bla;
3.) die Unit, in der das steht, in den "uses"-Abschnitt der fremden form eingliedern, z.b. uses Uni2
4.) auf die procedure mit Form1.Bla zugreifen
Jonas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: function für mehrere Units?

  Alt 4. Mär 2008, 11:06
Auf die Gefahr hin, das ich mich wiederhole
http://www.delphipraxis.net/internal...=853781#853781
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#25

Re: function für mehrere Units?

  Alt 4. Mär 2008, 11:36
Ahnung haben hier ne ganze Menge (zu diesem Problem). Aber genausoviele Varianten der Umsetzung würdest du hier finden. Welche für dich am besten ist, kann man von außen nicht wirklich entscheiden. Das hängt von vielen Faktoren ab:
-aktuelle Struktur des Programmes
-Mögliche Erweiterungen dieses Programmteiles
-persönliche Präferenzen
-...
Deswegen wurden hier mehrere Lösungswege angegeben. Ich versuche mal (mkinzlers +) meinen Vorschlag auszumalen.
Du legst eine extra Unit an:
Delphi-Quellcode:
Unit StringGridNotify;

interface

uses {...,} Grids, Contnrs;

type TStringGridEvent=class
       constructor Create;
       destructor Destroy; override;
      private
       FStringGrids:TObjectList;
      public
       procedure AddStringGrid(aStringGrid:TStringGrid);
       procedure DeleteStringGrid(aStringGrid:TStringGrid);
       procedure Clear;
       //man könnte auch FStringGrids als property rauslegen...
       //und dabei TObjectList vorher noch ableiten

       procedure ChangeTitle(aCol:integer;const aTitle:string);
       //weitere Ereignisse
     end;


//hier mal als globale Variable (eine von vielen Varianten);
//Besser könnte es noch sein, die globale Variable zu vermeiden.
//Aber ich kenne die restliche Programmstruktur nicht.
var StringGridEvent:TStringGridEvent;

implementation

constructor TStringGridEvent.Create;
//Liste für alle StringGrids anlegen
begin
  inherited; //besser is
  FStringGrids:=TObjectList.Create;
  FStringGrids.OwnsObjects:=false;
end;

destructor TStringGridEvent.Destroy;
begin
  inherited;
  FStringGrids.Free;
end;

procedure TStringGridEvent.AddStringGrid(aStringGrid:TStringGrid);
//ein StringGrid "anmelden"
begin
  if FStringGrids.IndexOf(aStringGrid)<0 then
    FStringGrids.Add(aStringGrid);
  //hier evtl. noch die Destroy Methode/Event des Grids umleiten, damit man mitbekommt,
  //wenn ein StringGrid gelöscht wird
end;
procedure TStringGridEvent.DeleteStringGrid(aStringGrid:TStringGrid);
//ein StringGrid "abmelden"
var index:integer;
begin
  index:=FStringGrids.IndexOf(aStringGrid);
  if index>=0 then FStringGrids.Delete(index);
end;
procedure TStringGridEvent.Clear;
//alle StringGrids "abmelden"
begin
  FStringGrids.Clear;
end;


procedure TStringGridEvent.ChangeTitle(aCol:integer; const aTitle:string);
//Beispiel für ein Ereignis:
//Es wird in allen angemeldeten StringGrids der Titel von Spalte aCol
//auf den Parameter aTitle geändert
var i:integer;
begin
  for i:=0 to FStringGrids.Count-1 do
    (FStringGrids.Items[i] as TStringGrid).Cells[aCol,0]:=aTitle;
end;


//weil wir eine globale Variable verwenden noch die 4 Zeilen
initialization
  StringGridEvent:=TStringGridEvent.Create;

finalization
  StringGridEvent.Free;

end.
Das ist nur ein Beispiel. Und ich bin mir zu 99% sicher, dass ich je nach Gegebenheit das noch anpassen würde (Stichworte: siehe Kommentare).
So könnte man es in deinem Beispiel erstmal verwenden. Du musst in jeder Formular-Unit diese Unit einbinden und beim Erstellen der StringGrids diese mit
StringGridEvent.AddStringGrids(...); anmelden.
Dann kannst du beispielsweise die Methode StringGridEvent.ChangeTitle aufrufen, und alle StringGrids bekommen entsprechend des Codes einen neuen Titel.


[rote Kästen habe ich gesehen, ich brauchte halt etwas länger zum Tippen]
[Edit1: Korrekturen zur Verbesserung der Lesbarkeit]
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#26

Re: function für mehrere Units?

  Alt 4. Mär 2008, 13:14
Hallo,
ich bin ja mit mkinzler nicht oft einer Meinung aber hier hat er Recht.

Delphi-Quellcode:
procedure TForm13.ColorButton6Click(Sender: TObject);
begin

ProcessGrid (TStringGrid, 1); //<--- Hier tritt der Fehler Auf
Überlegt mal was Tstringrid ist? Eine Klasse (Klassendefinition Tstringgrid).

Ihr übergebt hier einen Klassenbezeichner.
ProcessGrid (TStringGrid, 1); //<--- Hier tritt der Fehler Auf
Ihr müsst schon das Grid selbst übergeben.
Das ist etwa so als wenn du in eine Autowerkstatt gehst und sagst repararier AUTOS.
Du musst ihm schon sagen was für ein Auto.
So ähnlich muss das aussehen:
ProcessGrid (StringGrid1, 1); //<--- Hier tritt der Fehler Auf

Grüsse
Rainer
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#27

Re: function für mehrere Units?

  Alt 4. Mär 2008, 13:20
Hallo Rainer,

[OT]
nur zum Verständnis; warum antwortest Du auf etwas, was bereits seit einem dreiviertel Tag geklärt ist?
[/OT]
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#28

Re: function für mehrere Units?

  Alt 4. Mär 2008, 13:24
[OT]

Zitat von s-off:
Hallo Rainer,

nur zum Verständnis; warum antwortest Du auf etwas, was bereits seit einem dreiviertel Tag geklärt ist?
Weil da vielleicht der Seitenumbruch kam Passiert mir auch gelegentlich.
[/OT]
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#29

Re: function für mehrere Units?

  Alt 4. Mär 2008, 14:10
[OT]
Zitat von sirius:
[OT]

Zitat von s-off:
Hallo Rainer,

nur zum Verständnis; warum antwortest Du auf etwas, was bereits seit einem dreiviertel Tag geklärt ist?
Weil da vielleicht der Seitenumbruch kam Passiert mir auch gelegentlich.
[/OT]
Yup, vorallem weil du auf der Seite hier fast nochmal genau das gleiche - nur etwas mehr aufgeblasen - als Beispiel vorgibst, was ich auf der vorigen Seite gestern schon tat, nur ziemlich abgespeckt: http://www.delphipraxis.net/internal...=853740#853740
[/OT]
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#30

Re: function für mehrere Units?

  Alt 4. Mär 2008, 14:23
Zitat von Nuclear-Ping:
Yup, vorallem weil du auf der Seite hier fast nochmal genau das gleiche -
Nö, mein Konzept ist anders.
Es ist mehr OOP und vor allem beachtet es besonders diese Forderung:
Zitat von Borschti:
bei einem Klick auf einen Button(z.B. +1 Zeile), 4 StringGrids auf 4 verschiedenen Formularen zu verändern
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  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 14:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz