Delphi Can

Orjinalini görmek için tıklayınız: FMX Proje Hatası
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba arkadaşlar.

2 yıldır üzerinde çalıştığım projede ciddi bir sorunla karşılaştım. FMX uygulamayı IDE üzerinde açarken aşağıdaki hatayı alıyorum;

Error reading form :'Form1_SmXhdpiPh'
Error reading GridPanelMenus.columncollection: Cannot delete a column that contains controls.
Ignore the error and continue? 

Ignore ile geçiş yapılabiliyor ve uygulama çalışıyor ancak;

Tek yaptığım en son uygulamaya bir GridPanel eklemek idi... Hatta onu da kaldırdım tekrar denedim yine aynı.
Uygulama Windows'ta sorunsuz çalışıyor. Ancak Android cihazda çalıştığında tüm ekranların ve form üzerindeki bileşenlerin düzgün yerleşmediğini, yani cihazın ekran boyutlarına göre konumlandırılmadığını görüyorum.

Mesela cihazı yatay çevirdiğimde tüm nesneler düzgün görünürken dikey kullanımda ekranda formdaki nesneler sıkışık vaziyette görüntüleniyor.

Bu sorun durup dururken oldu. Düne kadar hiçbir sorun yoktu. Yani projeye ilk başladığımdan beri aradan geçen 2 yılda böyle bir sorun yaşamamıştım. Uygulamam tüm cihazlarda düzgün çalışıyordu.

implementation kısmı da aynen aşağıdaki gibiydi;

{$R *.fmx}

{$R *.SmXhdpiPh.fmx ANDROID}
{$R *.NmXhdpiPh.fmx ANDROID}


Hepsini kaldırdım, View menüsünden Android 3.5" 4" 5" gibi cihazları seçerek tekrar denedim ve çalıştırdım. Ancak sonuç olumsuz.

Sizce bunun nedeni ne olabilir ve ne yapabilirim?
Sorun sanal cihaz görüntüleri ile ilgilidir. 
{$R ile başlayan cihaz görüntülerini silmeniz yeterli olması gerekiyordu.
Farklı bir IDE ile test etmenizde fayda var.
(14-07-2021, Saat: 11:48)RAD Coder Adlı Kullanıcıdan Alıntı: [ -> ]Sorun sanal cihaz görüntüleri ile ilgilidir. 
{$R ile başlayan cihaz görüntülerini silmeniz yeterli olması gerekiyordu.

Evet hepsini silip denedim yine olmadı. Hayır anlamadığım projeye başladığımdan beri hiçbir ayar vs değiştirmedim. Düne kadar telefonda tablette hem yatay hem dikey her pozisyonda çalışan uygulama birden sapıttı! Windows'ta hiçbir sorun yok. Ama Android cihazda nesneler küçüldü filan yani bazı tab'ların altında ScaledLayout'lar kullanıyordum ona rağmen sanki yokmuş gibi davranıyor!

Üstelik öyle karışık bir uygulama da değil. Tek bir form ve Unit'ten oluşuyor. İçinde Tab'lar var yani...

{$R ile başlayan 2 tane imaj vardı zaten!
Proje dosyasındaki özel tanımlamaları (sürüm numarası, IdentiferId, uygulama ad ve label'ı vb.) not alın. 
- Proje dosyasını silin.
- Yeni bir proje dosyası oluşturun.
- Yeni proje dosyasındaki varsayılan Formu çıkarıp, bulunduğu dizinden de silin.
- Yeni proje dizinine kendi projenizdeki tüm unit ve formları aktarın.
- Project Manager'dan bu unit'leri yeni projeye ekleyin.
- Yeni projeyi kaydedip, kapatıp, açın.
Muhtemelen sorun çözülecektir.
Sorun çözüldükten sonra Proje ayarlarından eski tanımlamalarınızı yeniden yapmayı unutmayın.
$R ile başlayanları sildikten sonra dediğim durum tam da bu işte arkadaşlar!

mmm.jpg

Dikeyde bu şekilde ama yatay konumda hiçbir sorun yok. Ama önceden yatayda da dikeyde de hiçbir sorun yoktu!

(14-07-2021, Saat: 12:08)RAD Coder Adlı Kullanıcıdan Alıntı: [ -> ]Proje dosyasındaki özel tanımlamaları (sürüm numarası, IdentiferId, uygulama ad ve label'ı vb.) not alın. 
- Proje dosyasını silin.
- Yeni bir proje dosyası oluşturun.
- Yeni proje dosyasındaki varsayılan Formu çıkarıp, bulunduğu dizinden de silin.
- Yeni proje dizinine kendi projenizdeki tüm unit ve formları aktarın.
- Project Manager'dan bu unit'leri yeni projeye ekleyin.
- Yeni projeyi kaydedip, kapatıp, açın.
Muhtemelen sorun çözülecektir.
Sorun çözüldükten sonra Proje ayarlarından eski tanımlamalarınızı yeniden yapmayı unutmayın.

Hepsini yaptım ama malesef sorun yine çözülmedi... Böyle saçma bişeyle karşılaşmamıştım hiç tıkandım kaldım resmen.
Delphi sürüm farklılığından kaynaklanıyor zannedersem. formu delphi nin farklı bir sürümüyle oluşturduysanız. Bu forma yeni bir sürüm delphi de gridpanel eklediyseniz bu tür hatalar oluşabiliyor. Bende listview de aynı problemi yaşadım. Ya formu baştan yazacaksınız ya da eski sürüme döneceksiniz.