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
Seite 2 von 2     12   
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#11

Re: Comboboxen in einem StringGrid

  Alt 17. Mär 2005, 11:37
Richtig, also wenn das OnSelectCell Ereigniss auf eine Zelle der entsprechenden Spalte weist?!
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

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

Re: Comboboxen in einem StringGrid

  Alt 17. Mär 2005, 11:38
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.
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#13

Re: Comboboxen in einem StringGrid

  Alt 19. Mär 2005, 10:44
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
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
Angehängte Dateien
Dateityp: doc uspielbearbeitung_480.doc (3,6 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

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

Re: Comboboxen in einem StringGrid

  Alt 19. Mär 2005, 14: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
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Comboboxen in einem StringGrid

  Alt 19. Mär 2005, 14:47
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

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

(...).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
Angehängte Dateien
Dateityp: pas uspielbearbeitung_149.pas (9,2 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#16

Re: Comboboxen in einem StringGrid

  Alt 21. Mär 2005, 12:34
Hey Leute,
kann sich denn nicht mal einer von euch die Unit anschauen?

tia, gordon
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 11:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz