var
MyForm: TclForm;
btnKonumAl: TclProButton;
lblSonuc: TclProLabel;
lblBaslik: TclProLabel;
latitude: String;
longitude: String;
konum: String;
konumDegeri: String;
btnBasitKonum: TclProButton;
konumTimer: TclTimer;
konumBekleniyor: Boolean;
denemeSayisi: Integer;
void KonumKontrolEt
{
if (not konumBekleniyor)
denemeSayisi = denemeSayisi + 1;
konumDegeri = Clomosy.LocationValue;
// Debug bilgisi
lblSonuc.Text = '🔍 Konum Aranıyor... (' + IntToStr(denemeSayisi) + 'sn)' + #13#10 +
'Konum Değeri: "' + konumDegeri + '"';
// Konum alındı mı kontrol et
if ((konumDegeri <> '0|0') && (konumDegeri <> '') && (Length(konumDegeri) > 3)) {
// Konum başarıyla alındı
konumBekleniyor = False;
konumTimer.Enabled = False;
// Konum değerini parse et
latitude = clGetStringTo(konumDegeri, '|');
longitude = clGetStringAfter(konumDegeri, '|');
konum = latitude + '|' + longitude;
// Sonucu göster
lblSonuc.Text = '✅ Konum Başarıyla Alındı!' + #13#10 +
'Enlem: ' + latitude + #13#10 +
'Boylam: ' + longitude + #13#10 +
'Tam Konum: ' + konum + #13#10 +
'Süre: ' + IntToStr(denemeSayisi) + ' saniye';
ShowMessage('📍 Konum başarıyla alındı!' + #13#10 +
'Enlem: ' + latitude + #13#10 +
'Boylam: ' + longitude);
} else if (denemeSayisi >= 30) {
// Zaman aşımı
konumBekleniyor = False;
konumTimer.Enabled = False;
lblSonuc.Text = '⏰ Konum alınamadı (zaman aşımı)' + #13#10 +
'Lütfen GPS ayarlarınızı kontrol edin ve tekrar deneyin.';
ShowMessage('❌ Konum alınamadı! Zaman aşımı.' + #13#10 +
'GPS ayarlarınızı kontrol edin.');
}
}
void KonumAlClicked
{
try {
// Önceki timer'ı temizle
if (Assigned(konumTimer)) {
konumTimer.Enabled = False;
konumTimer.Free;
}
// Değişkenleri sıfırla
denemeSayisi = 0;
konumBekleniyor = True;
// Başlangıç mesajı
lblSonuc.Text = '🔍 GPS Sinyali Aranıyor...' + #13#10 +
'Lütfen bekleyin...';
// Konum isteği gönder
Clomosy.GetCurrentLocation;
// Timer oluştur (her 1 saniyede bir kontrol et)
konumTimer = MyForm.AddNewTimer(MyForm, 'konumTimer', 1000);
konumTimer.Enabled = True;
// Event'i ekle
MyForm.AddNewEvent(konumTimer, tbeOnTimer, 'KonumKontrolEt');
ShowMessage('📍 Konum isteği gönderildi!' + #13#10 +
'GPS sinyali aranıyor... Lütfen bekleyin.');
} except
lblSonuc.Text = '❌ Konum isteği gönderilemedi: ' + LastExceptionMessage;
ShowMessage('Hata: ' + LastExceptionMessage);
}
}
void KonumGirisClicked
{
try {
Clomosy.GetCurrentLocation;
// Konum değerini al
konumDegeri = Clomosy.LocationValue;
// Debug bilgisi
lblSonuc.Text = '🔍 Basit Konum Alma:' + #13#10 +
'Ham Konum: "' + konumDegeri + '"' + #13#10 +
'Uzunluk: ' + IntToStr(Length(konumDegeri));
// Konum alındı mı kontrol et
if ((konumDegeri <> '0|0') && (konumDegeri <> '') && (Length(konumDegeri) > 3)) {
// Konum parse et
latitude = clGetStringTo(konumDegeri, '|');
longitude = clGetStringAfter(konumDegeri, '|');
lblSonuc.Text = '✅ Basit Konum Alındı!' + #13#10 +
'Enlem: ' + latitude + #13#10 +
'Boylam: ' + longitude + #13#10 +
'Ham Veri: ' + konumDegeri;
ShowMessage('📍 Basit konum alındı!' + #13#10 +
'Enlem: ' + latitude + #13#10 +
'Boylam: ' + longitude);
} else {
lblSonuc.Text = '❌ Konum alınamadı!' + #13#10 +
'Ham Veri: "' + konumDegeri + '"' + #13#10 +
'Lütfen GPS ayarlarınızı kontrol edin.';
ShowMessage('❌ Konum alınamadı!' + #13#10 +
'Ham veri: ' + konumDegeri);
}
} except
lblSonuc.Text = '❌ Hata: ' + LastExceptionMessage;
ShowMessage('Hata: ' + LastExceptionMessage);
}
}
void FormKapatildi
{
// Timer'ı temizle
if (Assigned(konumTimer)) {
konumTimer.Enabled = False;
konumTimer.Free;
}
}
{
MyForm = TclForm.Create(Self);
MyForm.clSetWindowState(fwsMaximized);
// Başlık
lblBaslik = MyForm.AddNewProLabel(MyForm, 'lblBaslik', '📍 Basit Konum Servisi');
lblBaslik.Align = alTop;
lblBaslik.Height = 60;
lblBaslik.Margins.Top = 20;
lblBaslik.Margins.Left = 20;
lblBaslik.Margins.Right = 20;
lblBaslik.clProSettings.FontSize = 24;
lblBaslik.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
lblBaslik.clProSettings.TextSettings.Font.Style = [fsBold];
lblBaslik.clProSettings.FontHorzAlign = palCenter;
lblBaslik.clProSettings.FontVertAlign = palCenter;
lblBaslik.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#000000');
lblBaslik.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ffffff');
lblBaslik.clProSettings.BorderWidth = 2;
lblBaslik.clProSettings.RoundHeight = 30;
lblBaslik.clProSettings.RoundWidth = 30;
lblBaslik.SetclProSettings(lblBaslik.clProSettings);
// Konum al butonu (Timer ile)
btnKonumAl = MyForm.AddNewProButton(MyForm, 'btnKonumAl', '📍 Timer ile Konum Al');
btnKonumAl.Align = alTop;
btnKonumAl.Height = 60;
btnKonumAl.Margins.Top = 30;
btnKonumAl.Margins.Left = 50;
btnKonumAl.Margins.Right = 50;
btnKonumAl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#007bff');
btnKonumAl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
btnKonumAl.clProSettings.FontSize = 20;
btnKonumAl.clProSettings.IsRound = True;
btnKonumAl.clProSettings.RoundHeight = 30;
btnKonumAl.clProSettings.RoundWidth = 30;
btnKonumAl.SetclProSettings(btnKonumAl.clProSettings);
// Basit konum butonu
btnBasitKonum = MyForm.AddNewProButton(MyForm, 'btnBasitKonum', '📍 Basit Konum Al');
btnBasitKonum.Align = alTop;
btnBasitKonum.Height = 60;
btnBasitKonum.Margins.Top = 15;
btnBasitKonum.Margins.Left = 50;
btnBasitKonum.Margins.Right = 50;
btnBasitKonum.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#28a745');
btnBasitKonum.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
btnBasitKonum.clProSettings.FontSize = 20;
btnBasitKonum.clProSettings.IsRound = True;
btnBasitKonum.clProSettings.RoundHeight = 30;
btnBasitKonum.clProSettings.RoundWidth = 30;
btnBasitKonum.SetclProSettings(btnBasitKonum.clProSettings);
// Sonuç etiketi
lblSonuc = MyForm.AddNewProLabel(MyForm, 'lblSonuc', 'Konum almak için butona tıklayın.');
lblSonuc.Align = alTop;
lblSonuc.Height = 150;
lblSonuc.Margins.Top = 30;
lblSonuc.Margins.Left = 30;
lblSonuc.Margins.Right = 30;
lblSonuc.clProSettings.FontSize = 16;
lblSonuc.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
lblSonuc.clProSettings.FontHorzAlign = palCenter;
lblSonuc.clProSettings.FontVertAlign = palCenter;
lblSonuc.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#000000');
lblSonuc.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ffffff');
lblSonuc.clProSettings.BorderWidth = 2;
lblSonuc.clProSettings.RoundHeight = 20;
lblSonuc.clProSettings.RoundWidth = 20;
lblSonuc.SetclProSettings(lblSonuc.clProSettings);
// Event'leri ekle
MyForm.AddNewEvent(btnKonumAl, tbeOnClick, 'KonumAlClicked');
MyForm.AddNewEvent(btnBasitKonum, tbeOnClick, 'KonumGirisClicked');
MyForm.AddNewEvent(MyForm, tbeOnFormClose, 'FormKapatildi');
MyForm.Run;
}