Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Comboboxen in einem StringGrid (https://www.delphipraxis.net/42264-comboboxen-einem-stringgrid.html)

gordon freeman 17. Mär 2005 10:37

Re: Comboboxen in einem StringGrid
 
:oops: Richtig, also wenn das OnSelectCell Ereigniss auf eine Zelle der entsprechenden Spalte weist?!

ibp 17. Mär 2005 10:38

Re: Comboboxen in einem StringGrid
 
dann kannst du das so machen, wie in deinem ersten verweislink im post ganz oben! da habe ich den code gepostet, musst ihn nur im bereich col und row dementsprechend anpassen.

gordon freeman 19. Mär 2005 09:44

Re: Comboboxen in einem StringGrid
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, hab deinen Code jetzt soweit umgeschrieben, dass er auf meine Bedürfnisse passt, allerdings wird bei mir die ComboBox, die in der Spalte erscheinen soll nicht angezeigt :?

Wenn ich
Delphi-Quellcode:
Box.Parent := Grid;
Setze, wobei Box die ComboBox und Grid der Stringgrid ist, dann erscheint zwar die ComboBox, aber nur in der obersten linken Zelle des Grids. Und da geht sie auch nicht weg. Hab meinen Code mal angehängt. Wäre nett wenn einer von euch sich den mal reinziehen könnte und mir sagen könnte, was falsch ist.

tia, gordon freeman

ibp 19. Mär 2005 13:28

Re: Comboboxen in einem StringGrid
 
du musst das ganze im ondrawcell-ereignis steuern, da sonst die zelle nicht mit der box überzeichnet wird!!!

so sollte es funktionieren!!!

und eine bitte: keine doc datei!!!! den code hättest du auch hier posten können!


Delphi-Quellcode:
unit USpielbearbeitung;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Menus, Grids, USpieleigenschaften, IniFiles;

type
   TSpielBearbeitung = class
     //Objekte
     BearbeitungsForm : TForm;
     Grid    : TStringgrid;
     Box     : TComboBox;
       (...)
     //Variablen
     zPfad : String;
     aktCellX : Integer;
     aktCellY : Integer;
       //(...)
      procedure SetRect(rec:Trect); // <-------------------------------------- hier rein
   private
      {private-Deklarationen}
      procedure AktuelleZelleSpeichern(Sender: TObject; ACol,ARow: Integer; var CanSelect: Boolean);
        //(...)
   public
      {public-Deklarationen}
        //(...)
   end;



implementation

uses UMain;

//----------------------------------------------------------------------------//
//constructor
// - Form erzeugen, konfigurieren, anzeigem
// - Menu erzeugen, konfigurieren
// - Grid erzeugen, konfigurieren
//----------------------------------------------------------------------------//
constructor TSpielBearbeitung.create(pPfad : String; Eigenschaften : Boolean);
begin
//Form -erzeugen, -konfigurieren, -anzeigen
  BearbeitungsForm := TForm.create(nil);
  with BearbeitungsForm do
     begin
       BorderIcons := BorderIcons - [biMaximize] - [biSystemMenu] - [biMaximize];
       width := 500;
       height := 300;
       position := poScreencenter;
     end;

//(...)

//Grid erzeugen, konfigurieren
  Grid := TStringgrid.Create(nil);
  with Grid do
     begin
       parent := Bearbeitungsform;
       fixedcols := 0;
       fixedrows := 2;
       Options := Options + [goAlwaysShowEditor] + [goEditing];
       OnSelectCell := AktuelleZelleSpeichern;
     end;

//ComboBox erzeugen
  Box := TComboBox.Create(nil);

//Form anzeigen
  BearbeitungsForm.Show;
end;


//----------------------------------------------------------------------------//
//schliessen
// - Spielbearbeitung schließen
//----------------------------------------------------------------------------//
procedure TSpielBearbeitung.schliessen(Sender:TObject);
begin
  Bearbeitungsform.Close;
end;




//----------------------------------------------------------------------------//
//destructor
// - Objekte zerstören
//----------------------------------------------------------------------------//
destructor TSpielBearbeitung.free();
begin
//ComboBox freigeben
Box.Free;
//Gridfreigeben
Grid.Free;
//Form freigeben
BearbeitungsForm.Free;
end;



//----------------------------------------------------------------------------//
//Aktuelle Zelle Speichern
// - Die aktuell gewählte Zelle wird gespeichert
// - Wenn es die letzte ist, wird die ComboBox angezeigt
//----------------------------------------------------------------------------//
{procedure TSpielbearbeitung.AktuelleZelleSpeichern(Sender: TObject; ACol,
          ARow: Integer; var CanSelect: Boolean);}

procedure TfoDBEdit.StringGridOnDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState); // <--- anderes ereignis!!!!

begin
  self.aktCellX := Acol;
  self.aktCellY := Arow;
  if ACol = Grid.ColCount then
  begin
    self.SetRect(Grid.CellRect(ACol,ARow));
    Box.visible:=true;                      // sichtbar
  end
  else
    box.visible:=false;                     // unsichtbar
end;



//----------------------------------------------------------------------------//
//Der ComboBox die aktuelle Zelle zuweisen
//----------------------------------------------------------------------------//
procedure TSpielBearbeitung.SetRect(rec:TRect);
var r : TRect;
begin
  CopyRect(r,rec);
  r.BottomRight := Box.Parent.ClientToScreen(Grid.ClienttoScreen(r.BottomRight));
  r.TopLeft    := Box.Parent.ClienttoScreen(Grid.ClienttoScreen(r.TopLeft));
  Box.SetBounds(r.left,r.top,r.right-r.left,r.bottom-r.top);
  Box.BringToFront;
end;
end

gordon freeman 19. Mär 2005 13:47

Re: Comboboxen in einem StringGrid
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, hab jetzt alles so geändert, wie beschrieben, allerdings wird bei mir immer noch keine ComboBox angezeigt. Ich lade mal die Unit hoch.

Ein Objekt der Unit wird mit dem Aufruf

Delphi-Quellcode:
(...) := Spielbearbeitung.Create(False);
erstellt und mit dem Aufruf

Delphi-Quellcode:
(...).Free;
vernichtet.


Würde mich freuen, wenn ihr euch das ganze mal anschaut. (Ich weiß, dass es sehr nach Spaghetti-Code aussieht, allerdings ist es mein erstes Programm mit dynamisch erstellten Objekten!!!)

tia, gordon

gordon freeman 21. Mär 2005 11:34

Re: Comboboxen in einem StringGrid
 
Hey Leute,
kann sich denn nicht mal einer von euch die Unit anschauen?

tia, gordon


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr.
Seite 2 von 2     12   

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