AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Property "Objects" im Stringgrid

Ein Thema von Hansa · begonnen am 9. Jan 2005 · letzter Beitrag vom 24. Feb 2005
Antwort Antwort
Seite 1 von 6  1 23     Letzte » 
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Property "Objects" im Stringgrid

  Alt 9. Jan 2005, 16:54
Hi,

in diesem Thread hier :

http://www.delphipraxis.net/internal...a75c5f6fdb8c12

kam das Thema Ojects zur Sprache. Leider gibt das Thema in der Hilfe kaum was her. Was genau kann man damit jetzt machen ? Wenn ich das richtig sehe, dann kann man jeder einzelnen Zelle irgendwas zuordnen als TObject. Das ist mir aber etwas suspekt, weil zu abstrakt. 8) Ich bräuchte ein Fallbeispiel, möglichst einfach.

Angenommen ich will gezielt einzelne Zellen nicht editierbar machen, in Abhängigkeit von einer Bedingung. Ginge das ? In diesem Falle bräuchte ich nur von jeder Zelle true oder false und müßte das irgendwie auswerten, aber wie ? Wer weiß mehr ? Mein Gespür sagt mir, daß damit wohl schon einiges möglich ist, wo man zuerst gar nicht dran denkt. Oder ich täusche mich, da in der Hilfe darüber tatsächlich nur ein Satz steht.
Gruß
Hansa
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Property "Objects" im Stringgrid

  Alt 9. Jan 2005, 17:17
Du kannst einfach ganze Objecte in einer Zelle speichern.

Delphi-Quellcode:
Type TMyObject = class(TObject)
  private
    Editable : boolean;
end;


procedure AddObjectToGrid(ACol, ARow : integer; Editable : boolean);
var
  MyObject : TMyObject;
begin
  MyObject := TMyObject.Create;
  MyObject.EditAble := EditAble;
  Stringgrid1.Objects[ACol, ARow] := MyObject;
end;

function TestForEdit(ACol, ARow):boolean;
var
  MyObject : TMyObject;
begin
  MyObject := TMyObject(Stringgrid1.Objects[ACol, ARow]);
  result := MyObject.EditAble;
end;
Nur mal so als Beispiel.....

PS : Nicht vergesen die Objekte wieder Freizugeben !
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Property "Objects" im Stringgrid

  Alt 9. Jan 2005, 17:49
Hallo Hansa,
das was ich jetzt sage gilt für TStringGrid und alle TStrings-Nachfahren.
Die Objects Eigenschaft eigent sich hervorragend, um dem Text noch Zusatzinfo's
in Form eines Objektes mitzugeben. Es könnte ja sein, dass der Text im Grid
eine Eigenschaft eines Objektes ist. Wenn Du die Zelle anwählst hast Du sofort
das ganze Objekt zur Hand. Das kann manchmal ziemlich praktisch sein.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Property "Objects" im Stringgrid

  Alt 9. Jan 2005, 19:41
Zitat von Jens Schumann:
...Das kann manchmal ziemlich praktisch sein.
Kann man das so sehen, wie ein zu den einzelnen Zellen mitgeschlepptes 2. Array, in dem irgendwas drin ist, also auch nur ein boolean, wie in meinem Beispiel ? Oder eine Farbe oder was weiß denn ich ?

Wenn das tatsächlich so ist, dann frage ich mich, warum nirgendwo, zumindest hier nicht, was darüber zu lesen steht. Das wäre dann wirklich eine praktische Sache, die man unbedingt nutzen sollte.

P.S.: ich meine damit ein Array wie Cells [x,y], nur eben kein Text.
Gruß
Hansa
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Property "Objects" im Stringgrid

  Alt 9. Jan 2005, 19:50
Moin Jens,

Zitat:
...und alle TStrings-Nachfahren.
leider nicht für alle

Bei TMemo.Lines und TRichEdit.Lines wird zwar kein Fehler produziert, wenn man AddObject verwendet, aber hier enthält das Objekt nichts. Der Wert bleibt immer 0.

@Hansa:
Zitat von Hansa:
Wenn das tatsächlich so ist, dann frage ich mich, warum nirgendwo, zumindest hier nicht, was darüber zu lesen steht.
Was meinst Du mit "hier"?

Die Verwendung von Stringlist-Objekten für verschiedene Zwecke kam hier durchaus schon öfter mal zur Sprache.
Sozusagen als Tag Eigenschaft der Stringlisten
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
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: Property "Objects" im Stringgrid

  Alt 10. Jan 2005, 00:10
In dem Beispiel gehts nicht recht weiter. 8) Es waren einige Schreibfehler drin und hiermit gehts auch nicht. Wo muß ich "editable" besetzen ? AddObjectToGrid, wo muß das hin ? Im Moment erhalte ich nur Zugriffsverletzungen.

Delphi-Quellcode:
unit Unit1;

interface

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

type TMyObject = class(TObject)
  private
    Editable : boolean;
end;

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
  private
    { Private-Deklarationen }
    Editable : boolean;
    MyObject : TMyObject;
  public
    { Public-Deklarationen }
    procedure AddObjectToGrid(ACol, ARow : integer; Editable : boolean);
    function TestForEdit(ACol, ARow : integer):boolean;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AddObjectToGrid(ACol, ARow : integer; Editable : boolean);
var
  MyObject : TMyObject;
begin
  MyObject := TMyObject.Create;
  MyObject.EditAble := EditAble;
  Form1.StringGrid1.Objects[ACol, ARow] := MyObject;
end;

function TForm1.TestForEdit(ACol, ARow : integer):boolean;
begin
  MyObject := TMyObject(Stringgrid1.Objects[ACol, ARow]);
  result := MyObject.EditAble;
end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  if TestForEdit (ACol,ARow) = true then
    showmessage ('zulässig')
  else
    showmessage ('nicht zulässig');
end;

end.
Gruß
Hansa
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Property "Objects" im Stringgrid

  Alt 10. Jan 2005, 00:49
Moin!

Finde ich auch verständlich, weil wenn du nirgendwo mal AddObjectToGrid() aufrufst, dann steht nirgendwo ein Objekt drinne und daher stürzt TestForEdit() ab, weil er auf ein Objekt zugreift was nicht vorhanden ist. TestForEdit() ist leider nicht so geschrieben das er vorher prüft, ob ein Objekt vorhanden ist. Grundlegend ist der Code so funktionsfähig, wenn du denn auch überall mit AddObjectToGrid() mal das Flag setzen würdest...

MfG
Muetze1
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Property "Objects" im Stringgrid

  Alt 10. Jan 2005, 17:13
Ja, wenn man das so sieht. Wo soll ich die Objekte denn erzeugen ? Zu Anfang hat das Grid nur eine leere Zeile. Wo setze ich da die Objects ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: Property "Objects" im Stringgrid

  Alt 11. Jan 2005, 20:20
Benutzt diese Dinger also auch kaum einer ? Es sieht doch so aus, daß man jeder Zelle noch einiges an weiteren Infos mitgeben kann, egal was. Deshalb einmal die Zwischenfrage, wer das ganze bei sich einsetzt und wofür.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#10

Re: Property "Objects" im Stringgrid

  Alt 11. Jan 2005, 20:26
hallo hansa,

ich stze die Objekte in einem Stringgrid ein, um mehrere Farben in einer Zelle darzustellen.
aber das ist dir ja bekannt.

wollte nur den anfang machen.

feine Sache----- die Objecte im Stringgrid------


raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  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 16:11 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