Normaal gesproken ben ik niet op dit stuk van GoT te vinden maar nu ben ik het wel verplicht aangezien ik een probleem heb waar ik niet meer uit kom. In mijn applicatie heb ik een StringGrid staan. Ik heb een cel gehighlight en kan de waarde hiervan uitlezen en ik kan deze invullen d.m.v. een random functie. Echter wanneer ik mijn StringGrid aan het vullen ben moet dit per kolom gebeuren, dit lukt ook. Nu de kern van mijn probleem: de andere kolommen mogen niet geselecteerd kunnen worden zodat je alleen de kolom die gevuld wordt kunt uitlezen. Hoe kan ik nu de andere kolommen blokkeren en de geselcteerde kolom niet. Ik dacht dit te doen d.m.v. de volgende code, die de cellen kleurt en ook meteen blokkeert:
Door gebruik van de regel (StringGrid1.Enabled := False; ) krijg ik de volgende foutmelding: Cannot focus a disabled or hidden window. Deze manier werkt dus niet. Maar hoe krijg ik het dan wel voor elkaar
Ik neem aan door op de een of andere manier voor elke kolom te kijken of dat dit de geselecteerde kolom is en deze dan te enablen, maar hoe doe ik dat
Programmeeromgeving : Borland Delphi 6
De code komt van NLDelphi.com en werkt goed
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| procedure TForm_MeetResultaat.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with (Sender as TStringGrid), Canvas do begin Brush.Style := bsSolid; if ((ACol = ColSelect) and (ARow = RowSelect)) then begin Brush.Color := clLime; Font.Color:=clBlack; end else if (ACol = Colselect) then begin Brush.Color := clWindow; Font.Color := clGray; StringGrid1.Enabled := False; // <== levert foutmelding op end else begin Brush.Color := clMedGray; Font.Color := clBlack; end; SetTextAlign(Handle, TA_CENTER); TextRect(Rect, (Rect.Left + Rect.Right) div 2, Rect.Top + 2, Cells[ACol, ARow]); if (gdFocused in State) then DrawFocusRect(Rect) end; end; |
Door gebruik van de regel (StringGrid1.Enabled := False; ) krijg ik de volgende foutmelding: Cannot focus a disabled or hidden window. Deze manier werkt dus niet. Maar hoe krijg ik het dan wel voor elkaar
Ik neem aan door op de een of andere manier voor elke kolom te kijken of dat dit de geselecteerde kolom is en deze dan te enablen, maar hoe doe ik dat
Programmeeromgeving : Borland Delphi 6
De code komt van NLDelphi.com en werkt goed
Lego Taj Mahal te koop --> https://gathering.tweakers.net/forum/list_messages/2109838