AGB  ·  Datenschutz  ·  Impressum  







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

Comboboxen in einem StringGrid

Ein Thema von gordon freeman · begonnen am 16. Mär 2005 · letzter Beitrag vom 21. Mär 2005
Antwort Antwort
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#1

Re: Comboboxen in einem StringGrid

  Alt 19. Mär 2005, 13:28
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:54 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