Autor Beitrag
mrmiagi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 31


Delphi 7 pro
BeitragVerfasst: Do 08.01.04 10:17 
Ich habe ein Stringgrid und möchte auf klick in einer Zelle ein Bild Einfügen.
Das habe ich so :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Sg1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  SelectTag:= True;
end;

procedure TForm1.Sg1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var 
  RowRect: TGridRect;
  Auswahl: TRect;

begin
  RowRect:= Sg1.Selection;
  if (ARow >= RowRect.Top) and (ARow <= RowRect.Bottom) then
  begin
    Sg1.Canvas.Draw(Rect.Left,Rect.Top, Image1.Picture.Bitmap);
  end
end;


Bis jetzt wird nur in der gerade ausgewählten Zelle ein Bild eingeführt.
Wie bleibt das Bild dort auch erhalten, selbst wenn ich auf eine neue Zelle klicke???
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 08.01.04 12:57 
Hallo

erklär mir mal bitte, was du mit diesen Zeilen bezwecken willst:
Zitat:

RowRect:= Sg1.Selection;
if (ARow >= RowRect.Top) and (ARow <= RowRect.Bottom) then


Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
mrmiagi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 31


Delphi 7 pro
BeitragVerfasst: Do 08.01.04 13:08 
So genau kann ich das auch nicht sagen, habe das nur hier irgendwo im Forum gefunden. Aber ich glaube das so die gerade selektierte Zelle angesprochen wird. Wenn du das irgendwie anders machen würdest kannst dur mir das gerne zeigen.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 08.01.04 13:24 
Zitat:

So genau kann ich das auch nicht sagen, habe das nur hier irgendwo im Forum gefunden. Aber ich glaube das so die gerade selektierte Zelle angesprochen wird.

selection gibt die Größe eines auswahlbereiches zurück, nicht bloß eine zelle (dazu reicht sd1.col und sg1.row). und wenn rangeselect nicht auf true steht, hats eh wenig Sinn.
Du würdest nur immer die Zellen zeichnen, die in den reihen des gerade selektierten Bereiches liegen.
Bsp: Zelle Spalte 1 Reihe 2 selektiert. dann zeichnest du dein Bild in diese zelle. Jetzt selektierst du Zelle Spalte 2 Reihe 3. Dann werden 2xdas ondrawcell ereignis ausgelöst (einaml für alte und einmal für neue selektierte Zelle). Da die alte Zelle nicht mehr in der Selektion liegt, ist die If-Bedingung false und du zeichnest nix und das Bild verschwindet.

so wie ich das verstehe, möchtest du bei einem Klick auf ein Grid ein Bild reinladen, und das für jede Zelle unterschiedlich?

Das ist aber nicht ganz so einfach, und wenn du mir nichmal den zweizeiler erklären kannst wirds noch schwieriger ;).

Du müßtest auf alle Fälle die Bilder speichern. Ich weiß jetzt nicht, wo die Bilder herkommen und was du genau bezwecken willst. Entweder bietet sich eine Imagelist an, wo du deine Bilder reinlädst und ein Hilfs-Array (oder das Grid selbst) wo du dir merken kannst, in welcher zelle welches Bild angezeigt werden soll.

Oder du nimmst dir die eigenschaft Objects zu hilfe. dies kannst du Zelle für Zelle anders belegen. Hier könntest du einfach eine Bitmap erstellen un
diese Bitmap als Object für eine Zelle hionterlegen. beim Zeichnen greifst du dann auf die Bitmap zu und zeichnest die dann.

was nu besser ist für dich ist schwiergig, weil ich nicht weiß, was du genau tun willst und ob sich z.B. das Grid in der Zeilen-SpaltenAnzahl ändern kann etc.

Mfg Frank

edit: achso: such auch mal im Forum: normalerweise nutzt man ein Drawgrid, um Bilder in einem grid anzuzeigen. da gibts auch threads im Forum Suche in: Delphi-Forum, Delphi-Library DRAWGRID BILD

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)