2012-03-23 8 views
5

Sistemimde, önemli ayarlarda yapılandırma değerlerini depoladığım bir ayar sınıfım var. Aşağıdaki kod gibi görünüyor, ancak farklı türde birçok özniteliği var. Şimdi, bu ayarları çalışma zamanında ayarlayabileceğim ve yapılandırabileceğim bir form uygulamam gerekiyor. Her bir alan için alanları uygulamak çok zahmetli ve tüm değerlerin hatasız olarak eşleştirildiğini garanti eder.Otomatik olarak bir yapılandırma formu oluşturmak için bir bileşen var mı?

Şimdi benim sorum: bunu çözmek için otomatik olarak bir arabirim oluşturabilen bir vcl bileşenidir. Örneğin. değerleri düzenlemek için özniteliklerin ve alanların adlarını içeren ağaç benzeri veya liste görünümünde bir arabirim sunar (IDE'deki özellik bölmesi, yazıcı ayarları ile aşağıdaki ekran görüntüsüne bakın). Bu harika bir şey olurdu. Yok hayır?

Böyle yapılandırma formlarıyla nasıl baş edersiniz?

Girişiniz için teşekkürler! screenshot of my printer settings offering a interface like I wish to have

+2

VirtualTreeView, mülk düzenleyicisine ['AdvancedDemo'] (http://code.google.com/p/virtual-treeview/source/browse/#svn%2Ftrunk%2FDemos%2FAdvanced) adresinde iyi bir örnektir. İhtiyaçlarınız için özelleştirebilirsiniz. – TLama

+1

Genellikle, ayarları tutmak için başlangıçta bir TForm sınıfı kullanıyorum (ancak kullanıcı yapılandırmayı değiştirmek istediğinde gösterilmiyor). Başka bir birim/sınıf/bir ayar okumak isteyen her şey onu formdan almak zorundadır. Bu, enkapsülasyonu kırar ama bu özel amaç için çok fazla umurumda değil, özellikle de oturumlar arasında konfigürasyon formunu devam ettirmenin bir yolu var. Dikkat et, bir VCL formu kullanıyorum, iş parçacığı güvenliği açıkça dikkat etmem gereken bir sorundur: (( –

+0

JVCL, bir özellik düzenleyicisi bileşenine sahiptir. Tam olarak aradığınız şey değil, ama bu yeterlidir.) – dummzeuch

cevap

5

Delphi Jedi JVCL projesinden TJVInspector bileşeni Aradığınız ne çok benzer bir özellik editörü oluşturur:

TGoldmannSettings = class 
    private 
    FInitialSymbolSize   : Integer; 
    FPenWidth     : Single; 
    FCanvasColor    : TColor; 
    FShowLiveCoordinates  : Boolean; 
    FFont1      : TFont; 
    FMsmPointSymbol    : TAvailableSymbols; // own type 
    ... 
    public 
    constructor Create; 
    destructor Destroy; override; 
    property SymbolSize : Integer read FInitialSymbolSize write FInitialSymbolSize; 
    property Font1: TFont read FFont1 write FFont1; 
    ... 
    published 
    property PenWidth: Single read FPenWidth write FPenWidth; 
    property CanvasColor: TColor read FCanvasColor write FCanvasColor; 
    property ShowLiveCoordinates: Boolean read FShowLiveCoordinates write FShowLiveCoordinates; 
    ... 
    end; 

Bazen yazıcı ayarı iletişim kutularında Yani bir şey bulmak. INI dosyasında çalışan gelişmiş bir örneği var.

JVCL Sitesi: http://jvcl.delphi-jedi.org/

Güzel örnek: http://www.neugls.info/?tag=tjvinspector

JVCL/JCL paketi büyük ama yararlı bileşenleri ve işlevsellik bir ton vardır.

+1

Bunu bir "form tasarımcısı" veya "rapor tasarımcısı" parçası olarak kullanabilirim, aslında tam olarak bunu kullanmıştım. Ama ihtiyacınız olan tek şey Dize, Tamsayı ve Enumlar değilse ve kullanıcılarınız görülemezse ızgara özelliklerinin bir duvarında ve kafanız karışmasa veya biraz daha fazla yardıma ve ipucuna ihtiyaç duymuyorsa, JvInspector'ın tüm uygulamaları yapılandırmak için kullanıcı dostu bir genel yol olduğunu düşünmüyorum. –

4

Ben henüz delphi proje seçeneklerine benzer bir otomatik yapılandırma form jeneratörü oluşturmamıştım, ancak üzerinde çalıştığım birkaç projede bunu gördüm ve kaynak kodunu gördüm ve çok çalışıyor böyle:

  1. Ben çerçevenin taban türüne sahip TConfigFrameBase denir ve bunun gibi bazı özelliklerini içerecektir olacaktır: Caption, İpucu (bazı yardım) ve ad (kullanıcı özelliğin adını görüntülenir) (yapılandırma özelliği) ve Bölüm (bu sayfada gösterilen sayfa).

  2. Özel edinilmiş çerçeveler, boole özellikleri, dizgi özellikleri vb. Için kullanılacaktır. Etki alanınız (uygulamanız) kendi özel türlerine sahip olacaktır. Tarih? Danimarka'da eczane yerleri listeleri? Yalnızca gereksinim duyduğunuz tüm UI yapılandırması özellik türleri kümesini bildiğinizden ve bu nedenle bu otomatik veya yalnızca bir bileşeni oluşturan bir bileşen görmedim. Boole çerçevesinin bir Etiket denetimi ve bir onay kutusu içermesi ve yaklaşık 30 pikselin varsayılan yüksekliği olması gerekir. A tarafındaki seçeneklerin bir listesini B tarafındaki seçeneklere (örneğin belirli bir ızgara içinde görünen sütunlara) taşımamı sağlayan bir çerçeve 300 piksel kadar yüksek olabilir. Bu çerçeveleri dikey olarak istifleyerek, bir kaydırma kutusunda, düzen hakkında çok fazla düşünmek zorunda değilsiniz. Bu kareler bir liste kutusu doldurmak için kullanıldığında her şey kullanılabilir.

  3. Soldaki bir ağaç görünümü, bir bölüm seçmenize izin verir. Ağaç görünümündeki tıklatmada, sağ taraftaki bölme, bir liste veya sözlüğe kaydedilmiş olan dahili bir yapılandırma çerçevesi listemde yinelenerek ve ait oldukları Bölüme göre filtrelenerek oluşturulur.

enter image description here

benim yapılandırma kontrol olarak bir JVCL Mülkiyet Inspector kullanmak olmaz, ama bu sizin için işe yarayabilecek

. Ayrıca, VirtualTreeView'den ihtiyacınız olan her şeyi alacağınızı düşünmüyorum, ancak kilometreniz değişebilir. Kendi özel Editör kontrollerinizi yazabilirsiniz ve eğer yerinde editör kontrolleri yazmak isterseniz, VirtualTreeView'ı mükemmel bulabilirsiniz.

İlgili konular