iOs etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
iOs etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

24 Nisan 2018 Salı

Solmaz Gümrük Müşavirliği Yazılım Uzmanı

Şehir: İstanbul

Gümrükleme, Dış Ticaret ve Lojistik sektörünün öncü kuruluşu SOLMAZ,
büyüyen iş hacmine paralel olarak ve yeni sektörlerdeki yapılanmalarını
desteklemek amacıyla, Yazılım Geliştirme Departmanı`nda görevlendirmek üzere;

* Bilgisayar Mühendisliği ya da Bilgisayar Programcılığı bölümlerinden mezun
* Nesne Yönelimli (object oriented) programlama mantığına hakim
  (Delphi, C# ya da Java dillerinden birini iyi kullanan, tercihen Delphi)
* İlişkisel veritabanları, SQL kullanımı bilgisine sahip
* Tercihen 3 yıl ve üzeri tecrübeye sahip
* Tercihen ERP, gümrükleme, depolama, taşımacılık, dış ticaret, muhasebe/finansman uygulamalarından herhangi biri hakkında tecrübeli
* En az teknik dokümanları okuyabilecek düzeyde İngilizce bilen
* Araştırmacı, kendini geliştirebilen, program yazmayı seven ve takım çalışmasına yatkın
Yazılım Uzmanları arıyor.

Erkek adayların askerliğini yapmış olması ya da en az 2 sene askerlikle ilişkisi olmaması tercih nedenidir.

*** ÇALIŞMA YERİ İSTANBUL ZİNCİRLİKUYU'daki YENİ OFİSİMİZ OLACAKTIR***


İŞ TANIMI
* desktop uygulamaları
* mobil uygulamalar
* web / internet uygulamaları
* web servisleri
* yapay zeka, machine learning, big data uygulamaları
* uygulamalar arası veri aktarımı, sistem entegrasyonları, eBusiness, B2B, B2C işlemleri
* otomatik raporlama ve bilgilendirmeler
* gümrükleme, depolama, taşımacılık, kargo, lojistik, serbest bölge, sigorta, back office, vb. sektörel uygulamalar
* yönetim raporları, BI raporlamaları
* SQL sorguları, stored procedure, trigger, view, tablo vb. veritabanı tasarımı

İlan Kaynağı: https://www.kariyer.net/is-ilani/solmaz-gumruk-musavirligi-a-s-yazilim-uzmani-1899070

31 Temmuz 2014 Perşembe

Formun handle ile eventini yakalama

Merhabalar,

Kolay bi olay fakat her zaman ki gibi unutup tekrar aramamak için bloğumda yayınlıyorum :)

Olayımız delphinin bize sunduğu eventler haricinde eventleri yakalamaktır.

XE5 ile test ettim sorunsuz çalışmakta. Eğer ekli değilse "Winapi.Windows, Winapi.Messages" Kütüphanelerini eklemenizi rica edicem.


  
//Tanımlanması gereken procedure 
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;


procedure TMainForm.WMSysCommand(var Msg: TWMSysCommand);
begin
  if (Msg.CmdType = SC_MINIMIZE) then
  begin
//Burası eğer küçültme işlemi yapılırsa ne yapmak istediğiniz.
  end;

   DefaultHandler(Msg) ;
end;



Sizlere "SC_MINIMIZE" haricinde kontrol edebileceğiniz eventleri aşağıda yazmış bulunmaktayım artık gerisi amaca hizmet edecek olan kodlardır.


SC_SIZE = 61440;
SC_MOVE = 61456;
SC_MINIMIZE = 61472;
SC_MAXIMIZE = 61488;
SC_NEXTWINDOW = 61504;
SC_PREVWINDOW = 61520;
SC_CLOSE = 61536;
SC_VSCROLL = 61552;
SC_HSCROLL = 61568;
SC_MOUSEMENU = 61584;
SC_KEYMENU = 61696;
SC_ARRANGE = 61712;
SC_RESTORE = 61728;
SC_TASKLIST = 61744;
SC_SCREENSAVE = 61760;
SC_HOTKEY = 61776;
SC_DEFAULT = 61792;
SC_MONITORPOWER = 61808;
SC_CONTEXTHELP = 61824;
SC_SEPARATOR = 61455;

17 Temmuz 2014 Perşembe

Delphi android Kameradan ve galeriden resim çekme ve paylaşma

Merhabalar,

Birazdan bahsedeceğim olay embarcaderonun sitesinde mevcuttur ve bende ilk olarak oradan yararlanmıştım. 1-2 Arkadaşımın tekrar tekrar sorması üzerine türkçe bir yazıda elimizde bulunması açısından birşeyler yazmaya karar verdim.

Projeye başlayalım:

İlk olarak boş bir proje açıyoruz.

Projeye en temel olarak 1 adet TImage ve 1 adet TButton koymanız kafidir. Gerisi süslemeye girer ve maksat ekran güzel gözüksün hemen gerekli objeleri ekleyelim.

Eklenenler:
  ToolBar = ToolBar

  KameraBut = TButton
    Align = alRight
    StyleLookup= 'cameratoolbutton'

  KameraResim = TImage
    Align = alClient

  ActionList1 = TActionList




Objelerin yerleşimleri bitirdiğinizde sıradaki işlemimiz butonumuza bir action tanımlamak ve kısa yoldan nasıl yapılacağını resim ile göstereceğim.


Şuandaki işlemimiz resimleri projemize almak olduğuna göre:
1-) TTakePhotoFromLibraryAction = Galeriden foto alma
2-) TTakePhotoFromCameraAction = Kameradan foto alma

Hangi seçeneği uygulamak isterseniz tıklayınca o action tanımlansın.

Tanımlama işleminden sonra yine Event sekmesinden "Action" eventinin sol tarafındaki "+" artı işaretine tıklayarak genişletiniz.

OnDidFinishTaking eventi içerisine aşağıdaki kodu yazarak kameradan çekilen veya galeriden seçilen resimi TImage nesnemize alıyoruz.

procedure TKameraScreen.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
  KameraResim.Bitmap.Assign(Image);
end;


"Image" nesesi actiondan dönen TBitmap yani seçilen veya çekilen resimdir.

İlk Görünüm:


Resim çekme anı:


 Çekilen resimin TImage içerisine Assign olmuş hali:


Sosyal Paylaşım Butonu:


Tanımlama işleminden sonra yine Event sekmesinden "Action" eventinin sol tarafındaki "+" artı işaretine tıklayarak genişletiniz.

OnBeforeExecute eventi içerisine aşağıdaki kodu yazarak TImage nesnemiz içerisindeki resmi sosyal resim paylaşma eventi ile alıcı uygulamalara gönderiyoruz.


procedure TKameraScreen.ShowShareSheetAction1BeforeExecute(Sender: TObject);
begin
  ShowShareSheetAction1.Bitmap.Assign(KameraResim.Bitmap);
end;




25 Haziran 2014 Çarşamba

Delphi Android ve IOS Mac adresi bulma

Örnek Resim

ANDROID:
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wInfo = wifiManager.getConnectionInfo();
String macAddress = wInfo.getMacAddress();


IOS:
 Uses
{$IFDEF IOS}
 iOSApi.UIKit;
{$ENDIF}

var
  {$IFDEF IOS}
    Device    : UIDevice;
  {$ENDIF}
begin
  {$IFDEF IOS}
    Device := TUIDevice.Wrap(TUIDevice.OCClass.currentDevice);
    ShowMessage(Device.uniqueIdentifier.UTF8String);
    ShowMessage(Device.identifierForVendor.UUIDString.UTF8String);
  {$ENDIF}
end;

23 Haziran 2014 Pazartesi

X-SuperObject

Günümüz teknolojisi ile gelişen Delphi'de bir çoğumuzun JSON kullandığı ve bunu en güzel bir biçimde SuperObject ile yaptığı aşikardır. Rad Studio'nun son versiyonu olan XE5 ile artık IOS yanında Android platformunada el atmış bulunmaktayız. Ne yazıkki SuperObject bu yeni platformlarda çalışmamasından dolayı DBXJson kullanmak istemeyenler için bizim şirketten bir abimin hazırladığı X-SuperObject'i Delphi'de IOS, Android, MacOS, Windows platformlarının hepsinde hiç bir sorun yaşamadan kullanabilirsiniz. Örnekleri inceleyerek nasıl kullanıldığı hakkında bilgi edinebilirsiniz.

Link X-SuperObject için Tıklayınız.

Örnek JSON
{
"name": "Barış ATALAY",
"vip": true,
"telephones": ["000000000", "111111111111"],
"age": 24,
"size": 1.72,
"adresses": [
{
"adress": "blabla",
"city": "Antalya",
"pc": 7160
},
{
"adress": "blabla",
"city": "Adana",
"pc": 1170
}
]
}

Delphi Code
var
X: ISuperObject;
begin
X := TSuperObject.Create('{}');
X.S['name'] := 'Barış ATALAY';
X.B['vip'] := true;
with X.A['telephones'] do
begin
Add('000000000');
Add('111111111111');
end;
X.I['age'] := 24;
X.F['size'] := 1.72;
with X.A['adresses'].O[0] {Auto Create} do
begin
S['adress'] := 'blabla';
S['city'] := 'Antalya';
I['pc'] := 7160;
end;
// or
X.A['adresses'].O[1].S['adress'] := 'blabla';
X.A['adresses'].O[1].S['city'] := 'Adana';
X.A['adresses'].O[1].I['pc'] := 1170;

Super Expression
const
JSON = '{ "o": { '+
' "1234567890": {'+
' "last use date": "2010-10-17T01:23:20",'+
' "create date": "2010-10-17T01:23:20",'+
' "name": "iPhone 8s"'+
' }'+
' },'+
' "Index": 0, '+
' "Data": {"Index2": 1}, '+
' "a": [{'+
' "last use date": "2010-10-17T01:23:20",'+
' "create date": "2010-11-17T01:23:20",'+
' "name": "iPhone 8s",'+
' "arr": [1,2,3] '+
' }, '+
' {'+
' message: "hello"'+
' }]'+
'}';

var
X: ISuperObject;
NewJSon: ISuperObject;
NewArray: ISuperArray;
begin
X := SO(JSON);
ShowMessage( X['o."1234567890"."last use date"'].AsString );
ShowMessage( X['a[Index]."create date"'].AsString );
ShowMessage( X['a[Data.Index2].message'].AsString );
X['a[0].arr'].AsArray.Add('test1');
// -----
NewJSON := X['{a: a[Index], b: a[Data.Index2].message, c: o."1234567890".name, d: 4, e: a[0].arr[2], f: " :) "}'].AsObject;
NewArray := X['[a[Index], a[Data.Index2].message, Data.Index2, Index, 1, "1", "test"]'].AsArray;
end;

Variant
var
X: ISuperObject;
begin
X := TSuperObject.Create;
X.V['A'] := 1;
X.V['B'] := '2';
X.V['C'] := 1.3;
X.V['D'] := False;
X.V['E'] := Null;
Memo1.Lines.Add(X.AsJSON);
end;
Output

{"A":1,"B":"2","C":1.3,"D":false,"E":null}

Sample 2
const
JSN = '{ '+
' "adresses": [ '+
' { '+
' "adress": "blabla", '+
' "city": "Antalya", '+
' "pc": 7160 '+
' },'+
' { '+
' "adress": "blabla", '+
' "city": "Adana", '+
' "pc": 1170 '+
' } '+
' ] '+
'}';
var
X, Obj: ISuperObject;
J: Integer;
begin
X := TSuperObject.Create(JSN);
with X.A['adresses'] do
for J := 0 to Lenght -1 do
begin
Obj := O[J];
Obj.First;
while not Obj.EoF do
begin
Memo1.Lines.Add( Obj.CurrentKey + ' = ' + VarToStr(Obj.CurrentValue.AsVariant));
Obj.Next;
end;
Memo1.Lines.Add('------');
end;
end;

OR (Enumerator)
var
X: ISuperObject;
AMember,
OMember: IMember;
begin
X := TSuperObject.Create(JSN);

for AMember in X.A['adresses'] do
begin
for OMember in AMember.AsObject do
Memo1.Lines.Add(OMember.Name + ' = ' + OMember.ToString);

Memo1.Lines.Add('------');
end;
Output

adress = blabla
city = Antalya
pc = 7160
------
adress = blabla
city = Adana
pc = 1170
Marshalling

type

TTestSet = (ttA, ttB, ttC);

TTestSets = set of TTestSet;

TSubRec = record
A: Integer;
B: String;
end;

TSubObj = class
A: Integer;
B: Integer;
end;

TTest = class // Field, Property Support
private
FB: String;
FSubObj: TSubObj;
FSubRec: TSubRec;
FTestSets: TTestSets;
public
A: Integer;
B: TTestSet;
C: Boolean;
property D: String read FB write FB;
property E: TSubRec read FSubRec write FSubRec;
property F: TSubObj read FSubObj write FSubObj;
property G: TTestSets read FTestSets write FTestSets;
end;

TTestRec = record // Only Field Support
A: Integer;
B: TTestSet;
C: Boolean;
D: String;
E: TSubRec;
F: TSubObj;
G: TTestSets;
end;

implementation
...

var
Parse: TTest; // For Class;
S: String;
begin
Parse := TTest.FromJSON('{"A": 1, "B": 0, "C": true, "D": "Hello", "E":{"A": 3, "B": "Delphi"}, "F": {"A": 4, "B": 5}, "G": [0,2]}');
S := Parse.AsJSON;
end;

...
var
Parse: TTestRec; // For Record;
S: String;
begin
Parse := TSuperRecord.FromJSON('{"A": 1, "B": 0, "C": true, "D": "Hello", "E":{"A": 3, "B": "Delphi"}, "F": {"A": 4, "B": 5}, "G": [0,2]}');
S := TSuperRecord.AsJSON(Parse);
end;

Delphi CxGrid koşula göre hücre renklendirme işlemi

Herkese iyi çalışmalar..
Son zamanlarda dikkatime takılan bu konunun bir çok yerde sorulması ve parça parça cevaplar verilmesinden dolayı tek bir başlıkta ayrıntılı anlatmak istedim bu olayı.


Başlıktan da anlaşıldığı gibi satır renklendirme değil çoğu arkadaşımızın kullandığı hücre renklendirme olayından bahsedeceğiz.

İlk olarak hangi sütunumuzda bu hücre renklendirme olayını gerçekleştireceksek o sütuna tıklayıp "EVENTS" bölümünden "OnCustomDrawCell" bölümüne çift tıklayarak kod kısmına geçiyoruz ve başlıyoruz.

if AViewInfo.GridRecord.Values[Buraya koşulun aranacak olduğu sütunun index değeri] = 'Virman' then
begin
ACanvas.Brush.Color := clRed; //Burası koşulumuz sağlanırsa hücre içerisinin arka plan rengi
ACanvas.Font.Color := clWhite;//Burası koşulumuz sağlanırsa hücre içerisinin yazı rengi
end;
Yukarıdaki örnekte 1 sütundaki string koşul var ise hücre biçimlendirmeyi yaptık şimdiki küçük canlı örneğimizde rengarenk hücreleri yapacağız.


if AViewInfo.GridRecord.Values[BankaHareketTabloQryBAS.Index] = 'Borç' then
begin
ACanvas.Brush.Color := clRed;
ACanvas.Font.Color := clWhite;
end
else if AViewInfo.GridRecord.Values[BankaHareketTabloQryBAS.Index] = 'Alacak' then
begin

ACanvas.Brush.Color := clGreen;
ACanvas.Font.Color := clWhite;

end

else if AViewInfo.GridRecord.Values[BankaHareketTabloQryBAS.Index] = 'Sıfır' then
begin

ACanvas.Brush.Color := $0080A9FF;
ACanvas.Font.Color := clBlack;

end;