2010-01-29 13 views
13

Şu anda Delphi 7 ile oluşturulmuş bir SDI uygulamasına sahibim, son kullanıcının çalışma zamanında SDI ve MDI arasındaki arabirim türünü seçmesini istiyorum. Sorum şu: SDI ve MDI arasındaki uygulamanın davranışını çalışma zamanında nasıl değiştirebilirim?Switch GUI uygulama davranışını SDI ve MDI arasında

Şu anda, delphi ile aşağıdakileri sağlayan bir çift uygulama olduğunu biliyorum: EMS SQL Manager ve TOAD. peşin

alt text http://i46.tinypic.com/5l0ykw.png

teşekkürler.

cevap

7

İndir Jedi JVCL ve kurun ve "kod yerleştirme" JvDocking için Demolarımızdan bak. Bunu tam olarak yapıyorlar.

Onlar sorunları çok istemedikçe gerçekten FormStyle = fsMDIChild kullanmayın anlamına gelmektedir. MDI, kodu takarak gerektiğinde "öykünür".

Pencereleri kareye dönüştürmeyin. Bu kötü bir çözüm. MDI benzeri ortam için

MDI sorunları yok, bir yerleştirme birimi (yerleştirme destekleyen bileşenler, ya ticari veya açık kaynağı). Serbest ve açık kaynak olan JEDI JVCL'de yer alan JvDocking'i kullanıyorum.

Formlarınızı hem "yerleştirme" hem de "kilitlenmemiş" modlarda kullanırsınız ve bu size yerleştirilmiş bir IDE görünümü ve hissi verir (VIsual Studio ve RAD Studio) ve ayrılmamış bir IDE Görünüm ve his sağlar (RAD Studio sökülmüş veya klasik delphi 7).

4

Ben çerçeveler içinde benim şimdiki pencereleri dönüştürmek ve yapılandırılan mdi alt pencereleri veya normal pencere ya içine align = alClient ile bu kareleri koyardı.

Dikkat: Asla bunu gerçekten yapmadım, bu yüzden bilmediğim sorunlar olabilir. Çalışma zamanında

+0

+1 Bu en kolay çözümdür. – skamradt

+3

Hiçbir şeyi dönüştürmenize gerek yoktur. FOorm'ları, TForm.ManualDock kullanarak, çerçevelere değiştirmeden pencerelerinize koyabilirsiniz. –

2

Eğer SDI veya MDI isterseniz bağlı fsNormal veya fsMDIChild için TForm.FormStyle ya ayarlayın.

+2

"Gerçek MDI" kötü bir haber. Bkz. http: // stackoverflow.com/questions/1463221/delphi-mdi-vs-tabs-for-multi-document-interface –

+1

@WarrenP: MDI'dan hoşlanmıyorsanız özür dilerim ama bu sorunun geçerli bir cevabı –

+1

değil. LIKING ile değil. BAD kullanılabilirlik sorunları var. bağlantıya bakın. Bugünün kullanıcılarının çoklu monitör sistemleri var ve MDI artık iyi bir uyum değil. Yerleştirme, dezavantajları olmadan MDI'nın tüm avantajlarına izin verir. Kullanılabilirlik hakkında umurumda değil, "beğenmek ya da sevmiyorum" yapmaz. Değer verdiğim kullanıcılar. kullanıcı deneyimi önemlidir. Ayrıca, MDI glitches dolu. –

1

Like @ WarrenP'nin çözümü gibi, yerleştirme tabanlı bir çözümü şiddetle öneriyorum. Bunu başarmak için Jedi VCL'yi kullanmanız gerekmediği söylenmelidir. Örnek olarak here's çok basit (tüm-native-vcl) bir bileşen üretmişimdir, bu da formunuza/formlarınıza çok fazla örnek bırakmanıza ve bunlar için kenetlenmeyi (ve sekmeli yerleştirme) etkinleştirmek için hizalamalarını ayarlamanıza izin verir. bölgeler. MDI, bir yerlerin gerçekleşmesini bekleyen bir kazadır. MDI'nın kendisini kullanmadan "MDI görünümü ve duygusunu" elde etmek için mevcut çözümler var, yine de "düzgün" (muhtemelen görünmemek için) düşünürdüğüm biriyle karşılaşıyorum. Son olarak, MDI'yi bir seçenek olarak sağlamada bilgeliği sorgulamanız gerekir. Takma (çözme özelliğine sahip olan veya olmayan ve özellikle de Sekmeli Yerleştirme kullanıcı tarafından belirlenen bir seçenek olduğunda) daha modern bir his verir ve (düzgün bir şekilde) MDI'dan çok daha esnek ve sezgisel olabilir.

Sadece 2-pence değerinde.