![]() |
AW: StringGrid Zeile einfärben
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; |
AW: StringGrid Zeile einfärben
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 :oops: .
Ich will nur verhindern das der User auf diese Daten zugreift. |
AW: StringGrid Zeile einfärben
Hi Frau Müller
Delphi-Quellcode:
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.
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; 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:
Delphi-Quellcode:
CanSelect := NichtAuswählen;
Das ruft deine Funktion auf und übergibt an Canselect den Boolenwert, den du an Result zugewiesen hast. Gruss Delbor |
AW: StringGrid Zeile einfärben
Delbor ich verstehe nicht was du mir sagen willst :oops: . 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; |
AW: StringGrid Zeile einfärben
Liste der Anhänge anzeigen (Anzahl: 1)
|
AW: StringGrid Zeile einfärben
|
AW: StringGrid Zeile einfärben
Also es es wäre zuckersüß, wenn man Delphi-Sourcecode auch in die dafür vorgesehenen Delphi-Tags packen könnte:
Code:
Dann sieht das so aus:
[DELPHI]
procedure foo; begin // do something end; [/DELPHI]
Delphi-Quellcode:
Toll, gell?
procedure foo;
begin // do something end; So jetzt mal zum Thema (ähm, welchem eigentlich):
Delphi-Quellcode:
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.
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. Und bei der ComboBox sieht es genauso aus, der erste Eintrag hat den ItemIndex 0. |
AW: StringGrid Zeile einfärben
:-D 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 ? :oops: Hier wird mir allerdings nirgends die procedure angezeigt. Vielen Dank! :cheer: |
AW: StringGrid Zeile einfärben
![]() Zitat:
|
AW: StringGrid Zeile einfärben
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. :duck:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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-2025 by Thomas Breitkreuz