AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid Zeile einfärben

Ein Thema von strom · begonnen am 28. Dez 2014 · letzter Beitrag vom 13. Jan 2015
Antwort Antwort
Seite 3 von 3     123   
Frau Müller

Registriert seit: 13. Jan 2015
10 Beiträge
 
#21

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 11:58
Juhu Die Fehlermeldung ist weg und es funktioniert! Danke schon mal! Kann man hier viell statt die einzelnen zellen zu benennen sagen Spalte 1-3 und 6-7 ausblenden bzw Zeile 2-3 ausblenden?


procedure TForm1.ZellenNICHTanklicken(Sender: TObject);
begin
Case ComboBox1.ItemIndex of
0: with StringGrid1 do begin
Cells[4,4]:='';
Cells[8,4]:='';
end;
end;
end;
  Mit Zitat antworten Zitat
Frau Müller

Registriert seit: 13. Jan 2015
10 Beiträge
 
#22

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 12:00
ja das stimmt '' hat nichts mit Selected zu tun. Ich komme leider mit dem Begriff nicht weiter, sprich weiß nicht wie der quellcode aussehen sollte .
Ich will nur verhindern das der User auf diese Daten zugreift.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 13:00
Hi Frau Müller

Delphi-Quellcode:
procedure TCM_First.StrGridSchemaSelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
// Wird ausgeführt, bevor eine Zelle angeklickt wird.
// ACol bezeichnet die Spalte, auf die geklickt wird
// ARow die Zeile und
// CanSelect bestimmt, obdie Zelle ausgewählt werden kann
end;
Von hier aus könntest du deine Prozedur(Mach daraus eine Funktion) NichtAuswählen aufrufen und da prüfen, welches Item in der Combobox ausgewählt ist. Mit dem Aufruf übergibst du 2 Integer-Parameter für ACol und ARow.
Willst du zB., dass Zeile[1,1] nicht ausgewählt werden kann, vergleichst du den Indexwert der Combobox mit ACol und ARow. Wenn deine Bedingungen, die Zelle nicht selektieren zu lassen, erfüllt sind, stellst du Result auf false.
In SelectCell schreibst du dann:

CanSelect := NichtAuswählen;

Das ruft deine Funktion auf und übergibt an Canselect den Boolenwert, den du an Result zugewiesen hast.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (13. Jan 2015 um 13:12 Uhr)
  Mit Zitat antworten Zitat
Frau Müller

Registriert seit: 13. Jan 2015
10 Beiträge
 
#24

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 14:16
Delbor ich verstehe nicht was du mir sagen willst . Ich beschäftige mich mit delphi erst seit einer woche. Im Anhang siehst du was ich meine. Wäre schön wenn die zeilen nicht verschwinden, sondern nur nicht anklickbar wären


//diese Procedure habe ich dem StringGrid1 (Events: OnSelectCell) zugewiesen
//hiermit werden 2 oder mehrer zellen markiert..
//procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Longint; var CanSelect: Boolean);
//begin
//If ComboBox1.ItemIndex=0 then
//canSelect:=(StringGrid1.Cells[2, 1]='');
//end;



//Procedure zugewiesen ComboBox1 (Events: OnClick)
//dieses Ereignis hätte ich gerne. Die Zellen sollten idealerweise nicht
//verschwinden sondern nicht anklickbar sein

procedure TForm1.ZellenNICHTanklicken(Sender: TObject);
begin
Case ComboBox1.ItemIndex of
0: with StringGrid1 do begin
Cells[3,1]:=''; Cells[3,2]:=''; Cells[3,3]:=''; Cells[3,4]:='';
Cells[4,1]:=''; Cells[4,2]:=''; Cells[4,3]:=''; Cells[4,4]:='';
end;
1: with StringGrid1 do begin
Cells[2,1]:=''; Cells[2,2]:=''; Cells[2,3]:=''; Cells[2,4]:='';
Cells[4,1]:=''; Cells[4,2]:=''; Cells[4,3]:=''; Cells[4,4]:='';
end;
2: with StringGrid1 do begin
Cells[2,1]:=''; Cells[2,2]:=''; Cells[2,3]:=''; Cells[2,4]:='';
Cells[3,1]:=''; Cells[3,2]:=''; Cells[3,3]:=''; Cells[3,4]:='';
end;
end;
end;
  Mit Zitat antworten Zitat
Frau Müller

Registriert seit: 13. Jan 2015
10 Beiträge
 
#25

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 14:23
unbenannt.png
  Mit Zitat antworten Zitat
Klaus01

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

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 14:27
Hallo,

vielleicht hilft Dir der Thread(String Zellen readonly) weiter?

Grüße
Klaus
Klaus
  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
 
#27

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 14:42
Also es es wäre zuckersüß, wenn man Delphi-Sourcecode auch in die dafür vorgesehenen Delphi-Tags packen könnte:
Code:
[DELPHI]
procedure foo;
begin
  // do something
end;
[/DELPHI]
Dann sieht das so aus:
Delphi-Quellcode:
procedure foo;
begin
  // do something
end;
Toll, gell?

So jetzt mal zum Thema (ähm, welchem eigentlich):
Delphi-Quellcode:
unit Form.Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls;

type
  TForm1 = class( TForm )
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    StringGrid1: TStringGrid;
    procedure StringGrid1SelectCell( Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean );
  private
    function CanSelectCell( ACol, ARow: Integer ): Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.CanSelectCell( ACol, ARow: Integer ): Boolean;
begin
  Result := not(
    {} ( ( ComboBox1.ItemIndex = 1 ) and ( ACol >= 0 ) and ( ACol <= 2 ) ) or
    {}( ( ComboBox2.ItemIndex = 1 ) and ( ARow >= 1 ) and ( ARow <= 3 ) ) );
end;

procedure TForm1.StringGrid1SelectCell( Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean );
begin
  CanSelect := CanSelectCell( ACol, ARow );
end;

end.
Die Werte muss man eventuell noch anpassen, denn die Zeilen und Spalten sind 0 basiert, heisst also die erste Spalte ist die Spalte 0, analog mit der Zeile.
Und bei der ComboBox sieht es genauso aus, der erste Eintrag hat den ItemIndex 0.
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
Frau Müller

Registriert seit: 13. Jan 2015
10 Beiträge
 
#28

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 15:55
Ja wirklich Toll!

Ich habs eingetragen und Delphi zeigt keine Fehlermeldung an... nun versteh ich nicht wie ich wie ich der ComboBox sage führe mir die ''procedure StringGrid1SelectCell'' bzw. die ''funktion CanSelectCell'' aus.
Eigentlich mach ich das über ObjectInspector --> Events --> Ereignis wählen ? Hier wird mir allerdings nirgends die procedure angezeigt.

Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#29

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 16:01
http://docwiki.embarcadero.com/Libra...d.OnSelectCell
Zitat:
Tritt ein, bevor eine Gitterzelle ausgewählt wird.

In einer Ereignisbehandlungsroutine für OnSelectCell können Sie verhindern, dass eine bestimmte Gitterzelle ausgewählt wird. Die Parameter Col und Row bezeichnen die Position der betreffenden Zelle. Setzen Sie den Parameter CanSelect auf False, um zu verhindern, dass die Zelle ausgewählt wird.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Frau Müller

Registriert seit: 13. Jan 2015
10 Beiträge
 
#30

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 20:46
Nun habe ich 4 StringGrids in Form1. In jedem StringGrid ist eine zelle (Cels 0,0) markiert. Das sieht zum einem doof aus, zum anderem liest er mir natürlich falsche werte raus. Ich hätte gerne die zelle unmarkiert, sprich öffne ich mein Form1 dann soll keine zelle markiert sein erst beim ersten Mausklick markiere ich eine zelle.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 19:12 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