AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Control in Abhängigkeit der Windowsversion verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

Control in Abhängigkeit der Windowsversion verwenden

Ein Thema von OG Karotte · begonnen am 12. Jan 2008 · letzter Beitrag vom 13. Jan 2008
Antwort Antwort
OG Karotte
(Gast)

n/a Beiträge
 
#1

Control in Abhängigkeit der Windowsversion verwenden

  Alt 12. Jan 2008, 19:57
Hallo zusammen,

ist es möglich ein Control in Abhängigkeit der Windowsversion zu verwenden???

Die grundlegenden Eigenschaften sind identisch, nur erzeugt das Control unter Vista ein völlig anderes Verhalten als unter den vorherigen Windowsversionen. Daher suche ich nach einer (einfachen) Möglichkeit in Abhängigkeit von der OS-Version ein Control zu verwenden, ohne den kompletten Code quasi zweimal zu schreiben.

Beispiel:
Delphi-Quellcode:
var
  AControl: TObject;
begin
if WinVista then
  AControl := TSomeControl.Create(self)
else
  AControl := TAnotherControl.Create(self);

with AControl do begin
  // tue irgendwas
end;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Control in Abhängigkeit der Windowsversion verwenden

  Alt 12. Jan 2008, 20:52
z.B. in der Jedi gibt es fertige Funktionen zum Auslesen der Windows Version und diverse Komponentensammlungen wie Elpack machen reichlich von Flags wie IsWinVistaUpper gebrauch.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#3

Re: Control in Abhängigkeit der Windowsversion verwenden

  Alt 12. Jan 2008, 22:27
Zitat von Bernhard Geyer:
z.B. in der Jedi gibt es fertige Funktionen zum Auslesen der Windows Version ...
Nun, das ist mir bekannt und habe ich auch schon verwendet. Was ich jedoch meinte / wissen möchte:

Wie kann ich ein Control in Abhängigkeit der OS Version verwenden ohne das der Compiler meckert.
Verwende ich zum Beispiel dieses hier:
Delphi-Quellcode:
var
  OpenDlg: TObject;

begin
if IsWinVista then
  OpenDlg := TFileOpenDialog.Create(self)
else
  OpenDlg := TTntOpenDialog.Create(self);

with OpenDlg do begin
  if WinVista then begin
    FavoriteLinks := [];
    FileTypes := [];
 end;

  DefaultExt := '*.txt';
  Options := [ofHideReadOnly, ofFileMustExist, ofShareAware, ofEnableSizing];
  Title := #246'ffnen';
...
dann meckert der Compiler, das er die Eigenschaften für dieses Objekt nicht kennt.
Nun geht es mir nicht allein um obiges Beispiel sondern möchte ich allg. wissen ob und wie so was geht.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Control in Abhängigkeit der Windowsversion verwenden

  Alt 12. Jan 2008, 22:50
Zitat von OG Karotte:
Wie kann ich ein Control in Abhängigkeit der OS Version verwenden ohne das der Compiler meckert.
Verwende ich zum Beispiel dieses hier:
Wenn du eine Variable vom Typ TObject verwendest ist das kein Wunder.

Was stört dich den am TTntOpenDialog unter Vista? Wenns nur der neue Look ist solltest du mit dem Artikel von TMS das auch hinbekommen da man unter Vista "nur" einen Hook nicht setzen darfst (welche zum Zentrieren des Dialogs in der VCL verwendet wird)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#5

Re: Control in Abhängigkeit der Windowsversion verwenden

  Alt 12. Jan 2008, 23:26
Zitat von Bernhard Geyer:
Wenn du eine Variable vom Typ TObject verwendest ist das kein Wunder.
TObject müsste doch die oberste (oder unterste ) gemeinsame Klasse sein. Ich hatte gehofft, das man das dann irgendwie übereinander bringen könnte .

Zitat von Bernhard Geyer:
Was stört dich den am TTntOpenDialog unter Vista?
Ich verwende die letzte, freie Version und da wird beim Aufruf anstelle von Öffnen der Speichern-Dialog angezeigt. Daher kam ich auf obige Idee, die ja vielleicht auch für andere Objekte nutzbar wäre. Nun geht es aber wohl doch nicht "so einfach" wie gedacht. Schade eigentlich.

Somit geht es also nur wenn beide Controls den gleichen unmittelbaren Vorfahren haben (Im Beispiel oben müsste das dann ja wohl TOpenDialog bzw. TFileOpenDialog sein) ???
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Control in Abhängigkeit der Windowsversion verwenden

  Alt 13. Jan 2008, 00:36
Zitat von OG Karotte:
Somit geht es also nur wenn beide Controls den gleichen unmittelbaren Vorfahren haben (Im Beispiel oben müsste das dann ja wohl TOpenDialog bzw. TFileOpenDialog sein) ???
Delphi-Referenz durchsuchenTCommonDialog?
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#7

Re: Control in Abhängigkeit der Windowsversion verwenden

  Alt 13. Jan 2008, 10:12
Zitat von Muetze1:
Nope:
Code:
E2010 Inkompatible Typen: 'TCommonDialog' und 'TFileOpenDialog'
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Control in Abhängigkeit der Windowsversion verwenden

  Alt 13. Jan 2008, 15:16
Sorry, ich bin auch vom Standard Delphi-Referenz durchsuchenTOpenDialog ausgegangen...
  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 15:13 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